在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
最近遇到一个问题,需要通过一个函数返回多个值。无奈C,C++不能返回多个值。所以就想有什么方法可以解决。 网上方法比较杂乱,一般有两种替代做法: 1. 利用函数的副作用, 返回值在函数外定义, 在函数内修改, 一般为void函数。 例1.1输入x,y求修改后的x,y
View Code
1 #include<iostream> 2 using namespace std; 3 void swap(int *p,int *q) 4 { 5 int temp; 6 temp=*p; 7 *p=*q; 8 *q=temp; 9 } 10 int main() 11 { 12 int a,b; 13 cin>>a>>b; 14 cout<<"the num is :"<<a<<b<<endl; 15 swap(a,b);//swap(&a,&b); 16 cout<<"the sorted num is :"<<a<<b<<endl; 17 } 例1.2输入a,b,c求x,y,z 略 例1.3输入x[]求修改后的x[]
View Code
1 #include<stdio.h> 2 #include<stdlib.h> 3 void *bbb(int *p1) 4 { 5 int i=0; 6 while(i<4) 7 { 8 *p1+=1; 9 *p1++; 10 i++; 11 } 12 } 13 void main() 14 { 15 int a[4]={1,2,3,4}; 16 bbb(a); 17 int i=0; 18 while(i<4) 19 { 20 printf("%d\t",a[i]); 21 i++; 22 } 23 } 例1.4输入x[]求y[] 略 2. 把返回值打包返回,如返回一个数组名,指针,结构体. 例2.1返回一个数组名
View Code
1 #include<stdio.h> 2 #include<stdlib.h> 3 int aaa(int a[]) 4 { 5 return a; 6 } 7 void main() 8 { 9 int *p; 10 int a[4]={1,2,3,4}; 11 p=aaa(a); 12 int i=0; 13 while(i<4) 14 { 15 printf("%d\t",a[i]); 16 i++; 17 } 18 } 例2.2返回一个指针
View Code
1 #include<stdio.h> 2 #include<stdlib.h> 3 int aaa(int *p) 4 { 5 int i=0; 6 while(i<4) 7 { 8 *p+++=1; 9 i++; 10 } 11 return p; 12 } 13 void main() 14 { 15 int *px; 16 int a[4]={1,2,3,4}; 17 18 px=aaa(a); 19 int i=0; 20 while(i<4) 21 { 22 printf("%d\t",a[i]); 23 i++; 24 } 25 } 例2.3返回一个结构体 略 (被“略”的地方如果谁有兴趣可以自己去试着写一个) 带返回值的函数需要用一个指针接受,而接收的也是之前主函数里定义的变量的地址。即只要函数被调用了,变量的值就改变了,根本不需要在定义一个指针变量来接收,从这可以得出,有返回值的函数都可以改成void()型函数。(即例2.2可以简写成例1.3) 综上 可以看出,无论你怎么返回,无论你返回不返回,几乎都需要用到指针。可能有人会说用纯数组也可也实现,LZ以前也用数组,但现在觉得以前很愚蠢,原因会用指针的人都知道吧。其实上面的众多方法说白了也就一句话: 利用指针。 指针很强大,LZ以前贪玩,没怎么学,最近学C,又捡起来看了一下,一定要把这个学会。用好。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论