C语言中自定义函数返回值的个数

我想写一个函数让它的返回值有两个,并且在主函数中输出。我试了一下好像只能输出第一个返回值(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函数中返回多个值。在很多情况下你会发现这个技巧很有用。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-27
C语言中,函数只能返回一个值,如果想从函数得到多个返回值,可以通过指针参数实现。

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里面
自己去试验一下吧本回答被提问者和网友采纳
第3个回答  2010-05-27
你的return(a,b)是不行的,那是一个逗号表达式,返回的只是b的值
可以用指针呀,不必返回,还可以用结构体嘛
第4个回答  2010-05-27
函数只能有一个返回值。
纠正:
return(a,b)这种写法不是返回第一个值,它是把(a,b)当成逗号表达式,返回的是第2个,即b的值。

解决方法:
不可能返回2个值,通过子函数,使用指针方法改变多个值,通过子函数传入要改变量的地址,直接对地址单元内容操作,达到改变多个值的作用。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网