我想写一个函数让它的返回值有两个,并且在主函数中输出。我试了一下好像只能输出第一个返回值(return(a,b);),请问高手们怎么办?非常感谢!
在C中,正常情况下,我们只能从函数中返回一个值。但在有些情况下,我们需要从函数中返回多个值,此时使用数组或指针能够很好地完成这样的任务。这里是一
个示例,这个程序使用一个整型数组作为参数,并将数组元素的和与积返回给调用函数。下面是C代码,这是一种常见情况。下面给出实现技巧:
1.
#include
2.
#include
3. int*
Pool(int array[],int size)
4.
{
5.
int *x;
6.
int i=0;
7.
int
a[2]={0,1};
8.
for(i=0;i
9.
{
10.
a[0]+=array[i];
// 存储数组元素值的和
11.
a[1]*=array[i];
// 存储数组元素值的积
12.
}
13. //
将数组的基地址赋值给整型指针
14.
x=&a[0];
15. //
返回整个数组
16.
return x;
17. }
18.
19. int main()
20. {
21. int
a[]={1,2,3,4};
22. int
*c; c = Pool(a,4);
23.
printf("Sum = %d\nProduct = %d\n",c[0],c[1]);
24.
getch();
25.
return 0;
26. }
这样,我们就知道如何使用数组和指针从C函数中返回多个值。在很多情况下你会发现这个技巧很有用。
个示例,这个程序使用一个整型数组作为参数,并将数组元素的和与积返回给调用函数。下面是C代码,这是一种常见情况。下面给出实现技巧:
1.
#include
2.
#include
3. int*
Pool(int array[],int size)
4.
{
5.
int *x;
6.
int i=0;
7.
int
a[2]={0,1};
8.
for(i=0;i
9.
{
10.
a[0]+=array[i];
// 存储数组元素值的和
11.
a[1]*=array[i];
// 存储数组元素值的积
12.
}
13. //
将数组的基地址赋值给整型指针
14.
x=&a[0];
15. //
返回整个数组
16.
return x;
17. }
18.
19. int main()
20. {
21. int
a[]={1,2,3,4};
22. int
*c; c = Pool(a,4);
23.
printf("Sum = %d\nProduct = %d\n",c[0],c[1]);
24.
getch();
25.
return 0;
26. }
这样,我们就知道如何使用数组和指针从C函数中返回多个值。在很多情况下你会发现这个技巧很有用。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-05-27
C语言中,函数只能返回一个值,如果想从函数得到多个返回值,可以通过指针参数实现。
return (a,b);
返回的是b,因为(a,b)是一个逗号表达式,这个表达式的值就是最右边的一个表达式的值,即这里的b
return (a,b);
返回的是b,因为(a,b)是一个逗号表达式,这个表达式的值就是最右边的一个表达式的值,即这里的b
第2个回答 2010-05-27
这个你必须要结构体的。
#include<stdio.h>
struct tt{
int x,y;
};
tt A(int p,int q)
{
tt a;
a.x=p;
a.y=q;
return a;
}
int main()
{
tt x=A(0,1);
printf("%d %d\n",x.x,x.y);
return 0;
}
比如上面这个形式。。返回的值存在main函数的x里面
自己去试验一下吧本回答被提问者和网友采纳
#include<stdio.h>
struct tt{
int x,y;
};
tt A(int p,int q)
{
tt a;
a.x=p;
a.y=q;
return a;
}
int main()
{
tt x=A(0,1);
printf("%d %d\n",x.x,x.y);
return 0;
}
比如上面这个形式。。返回的值存在main函数的x里面
自己去试验一下吧本回答被提问者和网友采纳
第3个回答 2010-05-27
你的return(a,b)是不行的,那是一个逗号表达式,返回的只是b的值
可以用指针呀,不必返回,还可以用结构体嘛
可以用指针呀,不必返回,还可以用结构体嘛
第4个回答 2010-05-27
函数只能有一个返回值。
纠正:
return(a,b)这种写法不是返回第一个值,它是把(a,b)当成逗号表达式,返回的是第2个,即b的值。
解决方法:
不可能返回2个值,通过子函数,使用指针方法改变多个值,通过子函数传入要改变量的地址,直接对地址单元内容操作,达到改变多个值的作用。
纠正:
return(a,b)这种写法不是返回第一个值,它是把(a,b)当成逗号表达式,返回的是第2个,即b的值。
解决方法:
不可能返回2个值,通过子函数,使用指针方法改变多个值,通过子函数传入要改变量的地址,直接对地址单元内容操作,达到改变多个值的作用。