我一直在寻找这个问题大约一个小时的答案,我对C很新。当我提到这行时,我收到警告“逗号表达式的左手操作数没有影响”
return studio, one, two;
该语句不会从我的打印功能显示的内容中返回一个或两个变量。这是在C中返回多个变量的正确方法还是我做错了?这是我第一次不得不这样做,我们没有在课堂上讨论这个问题。事先道歉(我敢肯定)一个非常简单的修复。
答案 0 :(得分:3)
您不能在C中返回多个值。您的选项是返回结构,或传递对要修改的变量的引用:
返回struct:
struct studio_stuff {
int studio;
int one;
int two;
};
struct studio_stuff foo()
{
struct studio_stuff ret;
ret.studio = 0;
ret.one = 1;
ret.two = 2;
return ret;
}
传递修改参考:
void foo(int * studio, int * one, int * two)
{
*studio = 0;
*one = 1;
*two = 2;
}
答案 1 :(得分:2)
您无法在C中返回多个值。您可以通过以下方式之一获得类似(但不相同)的效果:
答案 2 :(得分:2)
逗号运算符计算其第一个操作数,丢弃结果,并给出第二个操作数的结果。
因此return studio, one, two
会评估studio
,弃用该值,评估one
,弃用该值,评估two
并返回该值。
无法从函数返回多个值。选项是返回结构(结构的值由一组值组成)或传递作为指针的其他参数。例如;
struct X func();
有效,因为struct X
可以包含多个值。
可选地
int func(double *y);
是一个可以返回int的函数,或者设置*y
的值(调用者可以看到)。