You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中'return'的本质作用是什么?我的相关结论是否正确?

关于C函数与return语句的理解验证

初始理解

当程序执行到函数末尾时,控制权会返回至调用方(函数),无论该函数是否包含return语句。

ISO C关于exit()

查阅C程序终止相关内容时,看到ISO C(7.22.4.4.6)中的表述:

exit函数无法返回至其调用方。

这与初始理解产生了矛盾。

ISO C关于return语句

于是查阅了ISO C关于return语句的说明(6.8.6.4):

  1. 带表达式的return语句不得出现在返回类型为void的函数中;无表达式的return语句仅可出现在返回类型为void的函数中。
  2. return语句会终止当前函数的执行,并将控制权返回至调用方。一个函数可以包含任意数量的return语句。

我的新结论

  1. return语句会强制宿主环境将控制权返回至调用方(函数)。
  2. 对于返回类型为void的函数,若包含return语句,则宿主环境必须将控制权返回至调用方;若未包含return语句,则宿主环境可选择是否返回控制权。
  3. 多数实现默认会将控制权返回至调用方,即使被调用函数未包含return语句,但exit()函数除外(该例外可能适用于其他部分函数)。

结论验证

  1. 结论1正确:return语句的行为是C标准明确规定的,它会立即终止当前函数执行,并将控制权返回给调用方,这是强制行为,不存在“宿主环境选择”的空间。

  2. 结论2错误:对于返回类型为void的函数,无论是否包含return语句,当执行到函数末尾时,控制权必须返回给调用方——这是C标准的要求,并非由宿主环境决定。只有当函数执行过程中调用了exit()、abort()这类直接终止整个程序的函数时,才不会返回控制权。

  3. 结论3部分有误:

    • 对于void返回类型的函数,执行到末尾返回控制权是标准强制要求,不是“多数实现默认”;而对于非void返回类型的函数,未写return就到末尾属于未定义行为,此时程序的行为不可预期,不能默认它会返回控制权。
    • exit()的情况不属于“函数没return就不返回控制权”的例外:调用exit()会直接终止整个程序,程序本身都停止运行了,自然不存在回到调用方的可能,这是exit()的设计目的,和函数是否有return无关。

内容的提问来源于stack exchange,提问作者user20333834

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:35:11