C 语言中 return 是函数内部的返回语句,核心作用有两个,第一立刻终止当前函数的执行,第二把后面跟随的值返回给调用这个函数的位置,函数一旦执行到 return,后面剩下的代码就不会再运行。不同返回类型的函数对 return 要求不一样,如果函数声明是 int char 这类带返回值类型,必须搭配 return 带回对应类型的数据,如果函数是 void 类型,return 可以不带数值,只用来提前退出函数,也可以完全不写 return。很多初学者容易混淆,以为 return 只是单纯返回数字,忽略它会中断函数执行这个特性,在分支判断里面经常提前 return,实现分支早退,减少多层 if 嵌套,这也是工程里面很常用的写法。学习 C 语言中 return 的用法,要区分普通函数 return 和 main 函数里面 return 的差别,main 函数里面 return 的值会作为程序退出状态码,0 一般代表程序正常结束,非 0 代表异常,操作系统可以读取这个退出码,后续学习递归函数的时候,return 更是递归终止的关键,没有正确 return 递归就会无限递归栈溢出。
return 基础语法形式
第一种 带返回值 return 表达式
适用场景 返回值类型不是 void 的函数,表达式计算结果会自动转换成函数声明的返回类型
第二种 不带返回值 return
适用场景 void 类型函数,仅提前退出函数,不能写返回数值
第三种 main 函数专用 return 退出码
main 函数是 int 类型,return 0 代表正常退出,return 其他整数代表错误状态
执行流程拆解
当程序运行进入函数内部,正常顺序执行代码,一旦碰到 return 语句,马上停止当前函数后续所有代码,计算 return 后面表达式的值,把控制权交还给调用函数的位置,调用处可以接收这个返回值,也可以直接忽略返回值继续往下运行。
举个例子,调用一个 int 函数 sum,写 int res 等于 sum 1 2,sum 内部执行 return 3,这个 3 就赋值给 res。如果调用的时候不接收返回值,比如 sum 1 2,函数照样执行 return,只是返回的值被丢弃。
分类使用场景
场景一 带返回值函数常规返回
int char float 这类函数,在函数末尾写 return,把计算结果返回,是最基础用法。
场景二 分支提前返回 早退写法
在 if 判断里面,如果条件满足,直接 return,不用写多层嵌套 if else,代码更清爽,比如参数校验,参数不合法直接 return,不用继续执行后面业务代码。
场景三 void 函数提前退出
void 函数不需要返回数据,但是遇到特殊情况想提前结束函数,就写单独 return,后面代码不再执行。
场景四 递归函数终止条件
递归函数必须依靠 return 实现递归出口,满足终止条件就 return,不再继续递归调用,缺少这个 return 就会一直递归,栈内存耗尽程序崩溃。
场景五 main 函数退出状态码
int main 里面 return 0 是标准写法,脚本或者系统调用这个程序的时候,可以通过退出码判断程序运行是否成功。
不同函数类型 return 对比表
| 函数返回类型 | return 是否必须带值 | 能否只写 return | 说明 |
|---|---|---|---|
| int char float 等非 void | 必须带回匹配类型值 | 不推荐 | 不带值会编译警告 |
| void | 不需要带值 | 可以 | 仅用于提前退出 |
| int main | 推荐写退出码 | 可省略但不规范 | 返回值是程序退出状态码 |
深度易错要点
第一点 return 后面代码变成死代码,编译器会提示警告,写了 return 之后,后面的语句永远不会执行,不要保留无效代码。
第二点 类型不匹配,函数声明是 int,return 后面写浮点数,会自动隐式转换,小数部分截断,这个转换有可能造成精度丢失,写代码要留意。
第三点 分支遗漏 return,if 里面写了 return,但是 else 分支没有 return,编译器报警告,函数所有执行路径都必须保证有返回值。
第四点 return 不能跳出多层循环,return 是退出整个函数,如果只是想跳出 for 循环,应该使用 break,不要误用 return。
第五点 递归里面 return 和普通 return 一样,不仅返回数值,同时结束这一层递归调用,理解递归栈的时候要结合 return 执行逻辑。
第六点 不要在 return 里面写有副作用的复杂表达式,虽然语法允许,但是可读性差,容易出错,建议提前计算好变量再 return 变量。
【常见问题】
问题 1 C 语言中 return 的用法里面,return 执行之后函数后面代码还会运行吗
回答 1 C 语言中 return 的用法里面,只要执行到 return 语句,当前函数立刻终止,return 后面剩余代码不会执行,这是 C 语言中 return 的用法核心特性,所以经常用在分支提前退出。
问题 2 C 语言中 return 的用法里面,void 函数可以写 return 吗
回答 2 C 语言中 return 的用法里面,void 函数可以写不带数值的 return,作用是提前结束当前函数,不需要返回数据,如果不需要提前退出,也可以省略 return。
问题 3 C 语言中 return 的用法里面,return 和 break 有什么区别
回答 3 C 语言中 return 的用法里面,return 是退出整个函数,break 只是跳出当前一层循环,return 会把控制权交还给调用处,break 仍然留在函数内部继续执行后续代码。
问题 4 C 语言中 return 的用法里面,main 函数 return 0 是什么含义
回答 4 C 语言中 return 的用法里面,main 函数 return 0 代表程序正常退出,这个数值是程序退出状态码,操作系统可以读取这个状态码,非 0 一般代表程序出现异常错误。
【免责申明】
本文讲解 C 语言中 return 的用法,语法基于标准 C 语言规范,不同编译器对于缺少 return 分支的警告等级和优化行为存在差异,自动类型转换规则符合通用标准,代码仅用于学习参考,复杂项目请结合目标编译器测试验证,本文不保证所有扩展编译选项行为完全一致。
本文来自作者[辰纪探津]投稿,不代表丝路生活网立场,如若转载,请注明出处:https://www.shjobhotel.com/kpjh/202611/2852.html
评论列表(4条)
我是丝路生活网的签约作者“辰纪探津”!
希望本篇文章《C 语言中 return 的用法 语句详解实战》能对你有所帮助!
本站[丝路生活网]内容主要涵盖:教育咨询,知识百科
本文概览:C 语言中 return 是函数内部的返回语句,核心作用有两个,第一立刻终止当前函数的执行,第二把后面跟随的值返回给调用这个函数的位置,函数一旦执行到 return,后面剩下的代码就不会再运行。不同返回类型的函数对 return 要求不一样,如果函数声明是 int char 这类带返回值类型,必须搭配 return 带回对应类型的数据,如果函数是 void 类型,return 可以不带数值,只用来提前退出函数,也可以完全不写 return。很多初学者容易混淆,以为 return 只是单纯返回数字,忽略它会中断函数执行这个特性,在分支判断里面经常提前 return,实现分支早退,减少多层 if 嵌套,这也是工程里面很常用的写法。学习 C 语言中 return 的用法,要区分普通函数 return 和 main 函数里面 return 的差别,main 函数里面 return 的值会作为程序退出状态码,0 一般代表程序正常结束,非 0 代表异常,操作系统可以读取这个退出码,后续学习递归函数的时候,return 更是递归终止的关键,没有正确 return 递归就会无限递归栈溢出。