我的印象是 C 中的任何函数都只支持一个 return 语句,直到我遇到一些提到多个 return 语句的注释。我的问题是这些多重返回语句是如何工作的。任何帮助都会得到帮助。谢谢!
6 回答
执行的第一条return
语句将终止函数并使用其值。
但是,显然可以有多个执行路径——它们可以返回不同的值。实际上,在非 void 函数中,每个可能的执行路径都必须返回一些东西。实现这一点的最简单方法显然是return
在函数的最后声明。
if(foo)
return 23;
else
return 42;
代码中只有一个 return 语句有一些论据;如果其中任何一个适用于您,请考虑阅读该文章。一个很好的例子是总是需要进行一些清理的代码。在这种情况下,您只想在完成此操作后返回 - 因此您将为返回值设置一个变量,goto
如果您需要提前返回,请使用它跳转到函数末尾的清理和返回部分.
好吧,它将遇到的第一个 return 语句将停止进一步执行并将控制权返回给调用者函数。如果您想在函数中处理后访问多个值,那么您可以使用结构或数组这些对象,您可以从函数返回,因此您将获得更新的值作为整个结构/数组对象
无论哪个返回先被击中,都会导致函数退出并将控制权交还给调用者。
例如:
int foo(int x)
{
if(x == 0) return 0;
return 1;
}
在这种情况下,如果x
是0
,那么第一个返回将被击中并被0
返回。如果传递了任何其他数字,则第二次返回被击中并1
返回。
你的意思是这样吗?
int function(int input)
{
if (input == 1) return 1;
else return 0;
}
好吧,它们作为返回语句工作。当然,对函数中的每个代码路径都有一个返回语句才有意义。
如果在其他逻辑块中有返回......那么你可以想象在一个函数中有多个返回。
但类似:return 1; 返回 2;
没那么多。
规则是,对于非 void 函数,如果没有返回语句,就必须不可能到达函数的末尾。
当执行一个函数时,当你点击一个 return 语句时,无论你在函数中的哪个位置(在 for 或 if ... 内),都会退出函数。因此,如果同一分支中有两个 return 语句,则只会考虑第一个。