如何在函数中返回多个变量

时间:2015-02-02 23:40:24

标签: c return

我一直在寻找这个问题大约一个小时的答案,我对C很新。当我提到这行时,我收到警告“逗号表达式的左手操作数没有影响”

return studio, one, two;

该语句不会从我的打印功能显示的内容中返回一个或两个变量。这是在C中返回多个变量的正确方法还是我做错了?这是我第一次不得不这样做,我们没有在课堂上讨论这个问题。事先道歉(我敢肯定)一个非常简单的修复。

3 个答案:

答案 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的值(调用者可以看到)。