1

我的印象是 C 中的任何函数都只支持一个 return 语句,直到我遇到一些提到多个 return 语句的注释。我的问题是这些多重返回语句是如何工作的。任何帮助都会得到帮助。谢谢!

4

6 回答 6

4

执行的第一条return语句将终止函数并使用其值。

但是,显然可以有多个执行路径——它们可以返回不同的值。实际上,在非 void 函数中,每个可能的执行路径必须返回一些东西。实现这一点的最简单方法显然是return在函数的最后声明。

if(foo)
    return 23;
else
    return 42;

代码中只有一个 return 语句有一些论据;如果其中任何一个适用于您,请考虑阅读该文章。一个很好的例子是总是需要进行一些清理的代码。在这种情况下,您只想在完成此操作后返回 - 因此您将为返回值设置一个变量,goto如果您需要提前返回,请使用它跳转到函数末尾的清理和返回部分.

于 2012-05-21T08:35:40.973 回答
1

好吧,它将遇到的第一个 return 语句将停止进一步执行并将控制权返回给调用者函数。如果您想在函数中处理后访问多个值,那么您可以使用结构或数组这些对象,您可以从函数返回,因此您将获得更新的值作为整个结构/数组对象

于 2012-05-21T08:38:15.147 回答
0

无论哪个返回先被击中,都会导致函数退出并将控制权交还给调用者。

例如:

int foo(int x)
{
    if(x == 0) return 0;
    return 1;
}

在这种情况下,如果x0,那么第一个返回将被击中并被0返回。如果传递了任何其他数字,则第二次返回被击中并1返回。

于 2012-05-21T08:35:55.777 回答
0

你的意思是这样吗?

int function(int input)
{
   if (input == 1) return 1;
   else return 0;
}

好吧,它们作为返回语句工作。当然,对函数中的每个代码路径都有一个返回语句才有意义。

于 2012-05-21T08:36:37.253 回答
0

如果在其他逻辑块中有返回......那么你可以想象在一个函数中有多个返回。

但类似:return 1; 返回 2;

没那么多。

于 2012-05-21T08:36:52.593 回答
-1

规则是,对于非 void 函数,如果没有返回语句,就必须不可能到达函数的末尾。

当执行一个函数时,当你点击一个 return 语句时,无论你在函数中的哪个位置(在 for 或 if ... 内),都会退出函数。因此,如果同一分支中有两个 return 语句,则只会考虑第一个。

于 2012-05-21T08:38:53.433 回答