return的各种用法
今天在开发STM32的时候遇到了关于 return
的问题,想想我也算学过C语言,但是对 return
的用法却只懂点皮毛,所以在这里总结一下 return
的具体几种用法和作用。
百度词条对 return
的介绍如下:
return 表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。 return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。 如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
这是较为官方的解释,按我初学的理解,return
的任务就是在一个函数的最后返回对应的参数,然后在外层函数中对这个参数做进一步处理。然鹅,我对return
的这种理解就像是外国人认为筷子只能夹菜,是片面肤浅的,筷子还可以用来喝汤、开啤酒盖、插着吃玉米…所以说return
也有很多种用法,本质上return
就是返回函数,只是我们在应用的过程中赋予了return
更加丰富的作用罢了。
一.为调用的函数返回参数值
此类应用最为普遍,通常是在一个具有返回值的函数中,返回一个参数值,这个返回的参数可以是一个数、表达式。通常情况下,返回值是一个值,如果想返回多个值可以参考以下三点:
1.设置全局变量,全局变量是定义在函数外的一个变量,其不属于任何一个函数,所以,虽然在调用函数中return
返回一个值,但可以将其余的返回值赋值给全局变量,这样就做到了返回多个值的效果。
2.使用数组名或指针作为函数形参,返回的是一个地址,主函数可以根据这个地址找到多个,要返回的数据。
3.使用结构体作为函数形参,结构体中可以包含多种形式的变量,以结构体作为形参相当于将所有返回值打包在一起,一次返回。
二.提前结束函数
由于return
具有把程序流程从被调函数转向主调函数的作用,所以时候也会用来终止函数的调用,也就是说return
是提前结束函数的唯一方法。因为函数一遇到return
就立即返回,return
后面的程序都不再执行,所以一个函数中可以有多个return
,但只会执行一个。return
后面可以跟一个参数作为返回值,也可以不跟参数,仅仅代表结束此函数。
三.返回一个函数
如果return
后面跟的是一个函数的话,就意味着,跳出此调用函数,并且跳出后执行return
后的函数,然后继续在主函数中执行程序。有时利用return
返回一个操作,比如在程序调试中出错后,需要return
跳出错误函数并向串口打印出错误的原因,这个时候return
后面的函数就用来向串口打印错误原因的。(个人理解)
文章参考:
C语言中文网
麦兜家园
return的各种用法相关推荐
- return true Java_[Java教程]js中return,return true,return false的用法及区别
[Java教程]js中return,return true,return false的用法及区别 0 2015-11-16 23:00:03 1.语法及返回方式 ①返回控制与函数结果 语法为:retu ...
- Python基础教程:return函数的用法
1.return函数 def face(name):return name+'的脸蛋,'def body(name):return name+'的身材'def main(a,b):return '我梦 ...
- php 类中调用另类,PHP return语句另类用法不止是在函数中,return语句_PHP教程
PHP return语句另类用法不止是在函数中,return语句 分享下PHP return语句的另一个作用,在bbPress的代码中看到的一个奇葩使用方法. 一直以为,return只能出现在函数中, ...
- C++中return语句的用法
C++中的return语句是函数中一个重要的语句,return语句用于结束当前正在执行的函数,并将控制权返回给调用此函数的函数. return语句有两种形式: return; return expre ...
- C语言中return的各种用法
按初学的理解,return的任务就是返回对应的参数,在外层函数中对这个参数做进一步处理. 实际上return的用法不只这些. 为调用的函数返回参数值 此类应用最为普遍,通常是在一个具有返回值的函数中, ...
- return函数的用法java_return用法总结
java中return的用法:1.在具有对象引用返回类型的方法中返回null,语法如"public Button doStuff(){}":2.在具有基本返回类型的方法内返回任何值 ...
- return另外一个用法
ALTER PROCEDURE p_test@name VARCHAR(11)ASIF (@name = NULL)RETURN 1ELSERETURN 2 DECLARE @return INT;E ...
- return语句的用法
1.return语句的作用:a.返回一个值,这个值可以是任意类型.b.使程序返回到操作系统(即终止程序) 2.java中对于一个函数,不论有没有返回值类型,都可以带有return 语句. 但是区别在于 ...
- return的常见用法
1)return数字/字符串/布尔,返回的还是数字/字符串/布尔 2)return函数 此时fn2()等价于 "function(){ alert(1)//嘿嘿,我是注释}" 这段 ...
最新文章
- 深蓝学院的深度学习理论与实践课程:第二章
- mysql flask-login_Flask web模板六–Flask-Login完成登录验证
- MySQL的CRUD操作+使用视图
- vue搭建后可以改下全局配置
- 【clickhouse】flink jdbc 方式写入 clickhouse 报错 request to {}->http://xxx:8123: Broken pipe
- Keras Datasets 国内下载镜像
- python3 selenium ie 拒绝连接报错_python Selenium权限错误:[WinError 5]访问被拒绝
- android最新图表框架,Android中绘制图表的开源框架AChartEngine初识
- Excel模板免费分享(办公常用、甘特图、员工绩效考核等模板)
- ElasticSearch之QueryDSL查询语法
- 【Python】 _tkinter.TclError: bitmap xzw.ico not defined
- Seat分布式事务学习
- 计算机大作业的范本,计算机应用基础大作业.doc
- 数字IC设计知识点及综合题详解(提前批、秋招必刷基础题)——(四)亚稳态、跨时钟域(CDC)处理方法及其编程仿真代码
- Markdown使用指南
- 天梵古法健康知识普及:手阳明大肠经
- crosstab交叉表_数据透视之交叉表 crosstab()
- Codevs 1066 引水入城 2010年NOIP全国联赛提高组 BFS + 贪心
- 分布式异步任务神器-Celery
- 统计学--从对P值的理解谈起
热门文章
- php组件缓冲区溢出漏洞,一个缓冲区溢出漏洞的简易教程
- 一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
- 对偶单纯形c语言程序,对偶单纯形法C语言实现.doc
- APPLE iPhone 3G得了富贵病
- 事件驱动及其设计模式
- linux防网络攻击,让Linux系统有效防御ARP攻击
- 遇到个RestTemplate接收 application/octet-stream的问题
- CF 1617C. Paprika and Permutation
- linux shell 将字符串分割成数组
- 过滤器:自清洗过滤器的原理与技术特点说明