c 语言中的 return 语句是写在函数内部的控制语句,核心有两大作用,第一立刻终止当前函数的执行,第二把指定的值返回给调用该函数的位置。只要程序运行到 return,函数后面剩余代码就不会继续执行,控制权马上交回调用处。函数的返回类型决定 return 后面能不能带数值,如果函数声明是 int char float 这类非 void 类型,就必须通过 return 返回对应类型的数据,如果是 void 无返回值函数,return 可以单独写,只用来提前退出函数,也可以省略不写。c 语言中的 return 语句用法是函数章节核心知识点,main 函数里面的 return 比较特殊,它返回的是程序退出状态码,0 代表正常退出,非 0 代表异常;递归函数里面 return 还是递归出口的关键,缺少正确 return 会造成无限递归栈溢出。很多初学者容易混淆 return 和 break,break 只跳出循环,return 直接结束整个函数,这个是考试高频易错点。
return 基础语法形式
第一种 带返回值 return 表达式
适用 非 void 函数,表达式结果会自动隐式转换成函数声明的返回类型
第二种 不带返回值 return
适用 void 函数,仅提前结束函数,后面不能写数值
第三种 main 函数 return 退出码
int main 里面 return 0,作为操作系统识别程序运行状态的退出码
执行流程拆解
程序进入函数之后按顺序执行代码,一旦碰到 return,马上停止函数后续代码,计算 return 后面表达式的值,把这个值传回调用位置。调用处可以定义变量接收返回值,也可以直接调用函数,丢弃返回值,但是函数本身依然会终止执行。
常见使用场景
场景一 函数末尾常规返回
int char 等带返回值函数,计算完成之后,在函数末尾写 return,把计算结果返回,属于最基础写法
场景二 分支早退写法
在 if 判断内部提前写 return,参数校验不合法的时候直接退出,避免多层嵌套 if else,工程代码非常常用
场景三 void 函数提前退出
void 函数不需要返回数据,遇到特殊条件,单独写 return 提前终止函数运行
场景四 递归函数终止出口
递归函数必须设置终止条件,满足条件就 return,停止继续递归调用,防止栈内存耗尽崩溃
场景五 main 函数退出
int main 标准写法末尾 return 0,表示程序正常结束,外部脚本可以读取这个退出码判断程序是否成功运行
不同函数返回类型 return 对比表
| 函数返回类型 | return 是否必须带数值 | 是否可以单独写 return | 说明 |
|---|---|---|---|
| int char float 等非 void | 必须带回匹配类型值 | 不推荐 | 所有分支都要有返回值,否则编译警告 |
| void | 不需要数值 | 可以 | 仅用于提前退出 |
| int main | 推荐写退出码 | 可省略但是不规范 | 返回值是程序退出状态码 |
深度易错要点
第一点 return 之后的代码属于死代码,永远不会执行,编译器一般会给出警告,不要保留无效语句
第二点 所有分支都要有 return,如果 if 里面写了 return,else 分支漏掉 return,编译器报警告,运行返回随机垃圾值
第三点 类型隐式转换,函数是 int,return 后面写浮点数,小数部分直接截断,会丢失精度
第四点 return 不能替代 break,return 是退出整个函数,break 只跳出当前一层循环,嵌套循环里面误用 return 会直接结束函数
第五点 不要在 return 里面写复杂带副作用表达式,可读性差,建议提前计算存入变量,再 return 变量
第六点 递归调用时,return 会结束当前这一层递归调用,把数值返回上一层递归栈,理解递归栈的时候要结合 return 逻辑
【常见问题】
问题 1 c 语言中的 return 语句用法里面,执行 return 之后后面代码还运行吗
回答 1 c 语言中的 return 语句用法里面,一旦执行 return,当前函数立刻终止,return 后面剩余代码不会执行,这也是经常用它做分支提前退出的原因。
问题 2 c 语言中的 return 语句用法里面,void 函数可以写 return 吗
回答 2 c 语言中的 return 语句用法里面,void 函数可以写不带数值的 return,作用是提前结束函数,不需要返回数据,如果不需要提前退出,也可以省略 return。
问题 3 c 语言中的 return 语句用法里面,return 和 break 区别是什么
回答 3 c 语言中的 return 语句用法里面,return 是退出整个函数,控制权交还给调用位置,break 只是跳出当前一层循环,函数内部后续代码仍然继续执行。
问题 4 c 语言中的 return 语句用法里面,main 函数 return 0 代表什么
回答 4 c 语言中的 return 语句用法里面,main 函数 return 0 代表程序正常退出,这个数值是程序退出状态码,操作系统或者外部调用程序可以读取这个状态码判断程序是否正常运行。
【免责申明】
本文讲解 c 语言中的 return 语句用法,语法基于标准 C 语言规范,不同编译器对于缺少 return 分支的警告等级和优化行为存在差异,自动类型转换遵循通用标准,代码仅用于学习参考,复杂项目请结合目标编译器测试验证,本文不保证所有扩展编译选项行为完全一致。


