艺考网
全国站

三分钟了解C语言的rreturn。事实证明,局部变量就是这样返回的。

xunaa
2024-10-07 19:35:46
编辑说
在有返回值的函数中,return语句的作用是提供整个函数的返回值,结束当前函数的执行。 return 语句也可以用在不返回值的函数中,例如在检测到错误时提前结束当前函数的执行。看

在有返回值的函数中,return语句的作用是提供整个函数的返回值,结束当前函数的执行。 return 语句也可以用在不返回值的函数中,例如在检测到错误时提前结束当前函数的执行。看一下下面的例子:

int add(int a, int b){ return a+b;}void print_log(double x){ if(x=0.0){ printf('error\n'); } return;} printf('log(x)=%f\n', log(x));}int main(){ int sum;总和=加(2,3);打印日志(3.2);返回0;}

对于print_log函数来说,它是void类型,没有返回值。 return在这里起到提前终止的作用。由于我们要打印x 的对数,因此x 必须是正数。 print_log函数对x的值进行判断。如果不大于0,则打印错误并直接返回到print_log函数,并返回到调用它的地方进行下一步。

对于像add这样返回值的函数,return相当于定义一个与函数返回类型相同的临时变量,并用return后的表达式进行初始化。不过,这个临时变量比较特殊。我们只读取它的值,读完后释放它。我们无法在其中存储新值。简单来说,函数返回值不能是左值。编写以下内容是非法的。

加(2,3)=4; //非法

现在已经对 return 的用法了解了,但是还有一点点疑问

三分钟了解C语言的rreturn。事实证明,局部变量就是这样返回的。

你还记得上面的图片吗?在上一节(三分钟看懂C语言,为什么局部变量只能在函数中使用且必须初始化)中,我们提到程序每次调用函数时,都会在栈区为其分配一块区域。所有局部变量变量都存储在该区域中。函数执行返回后,系统自动收回该区域。

该区域更正式的名称是“堆栈帧”。

那么问题来了。既然函数的局部变量存放在栈区,而函数返回时栈区就被释放,那么为什么add函数可以返回局部变量呢?事实上,函数返回的不是局部变量,而是局部变量中存储的数据。

在上一节中,我们用鞋柜来比喻局部变量,用鞋子来比喻数据。我们要拿出的是鞋子,而不是鞋柜,对吗?事实上,函数执行完毕后,系统首先会将返回值暂时保存在寄存器eax中,所以即使函数的栈帧被系统回收,它的返回值仍然很好地保存在eax中。函数返回后,系统从eax中取出返回值并赋值给调用者。看一下下面的例子:

#include stdio.hint fun(){ return 1;}int main(){ int ret; ret=乐趣(); return 0;} 我们查看了它的汇编代码,发现一切都和我们预想的一致:

用户评论

陌離

终于搞懂了C语言里的返回值是怎么回事儿啊,还用不到三分钟!

    有18位网友表示赞同!

毒舌妖后

我之前一直在纠结为啥要使用return就结束函数,现在明白了!原来是这样返回局部变量的。

    有14位网友表示赞同!

暖栀

感觉这个教程特别实用,简单易懂,三分钟点通c语言里return机制!

    有6位网友表示赞同!

容纳我ii

想学习C语言可是总觉得rreturn太难理解,幸好看到这篇文章。

    有8位网友表示赞同!

不要冷战i

rreturn原来是这样返回局部变量的啊,以前我真是不知道怎么使用!看来以后可以不用再纠结了!

    有10位网友表示赞同!

留我一人

终于明白了,rreturn语句可以把函数计算出的结果返回给调用者。

    有14位网友表示赞同!

旧事酒浓

学习C语言太容易感到困惑了,这篇文章真TM解救了我的困扰!

    有5位网友表示赞同!

淡淡の清香

对c语言的返回值机制一直没搞懂,这篇教程真是太好用了,三分钟秒懂!

    有16位网友表示赞同!

墨染殇雪

以前总是以为return只用在函数结束的时候,现在知道可以用来返回局部变量的值了。真棒!

    有6位网友表示赞同!

烬陌袅

想简单快速了解C语言里的rreturn机制,这篇文章就够了!

    有15位网友表示赞同!

凝残月

这篇教程太赞了,我之前学习C语言时一直困惑于return语句的使用。看完这篇文章,终于明白了!原来返回局部变量就这么简单!

    有10位网友表示赞同!

莫飞霜

c语言的return语句,我还以为很复杂呢!看来三分钟就能理解啊!

    有6位网友表示赞同!

﹏櫻之舞﹏

rreturn机制太重要了,学习C语言的朋友们一定要搞懂! 这篇文章讲解得很通俗易懂,值得推荐!

    有10位网友表示赞同!

江山策

终于不再困惑了,rreturn 的使用还真就那么简单!

    有10位网友表示赞同!

_心抽搐到严重畸形っ°

这也太直观了吧,原来C语言里的rreturn返回值机制是这样的!感谢分享!

    有18位网友表示赞同!

何必锁我心

学习编程的关键是理解基础知识,这篇教程讲解rreturn确实很到位!

    有19位网友表示赞同!

还未走i

三分钟搞懂C语言里的rreturn语句,简单实用,非常推荐!

    有14位网友表示赞同!

免责声明
本站所有收录的学校、专业及发布的图片、内容,均收集整理自互联网,仅用于信息展示,不作为择校或选择专业的建议,若有侵权请联系删除!

大家都在看

三分钟了解C语言的rreturn。事实证明,局部变量就是这样返回的。

三分钟了解C语言的rreturn。事实证明,局部变量就是这样返回的。

在有返回值的函数中,return语句的作用是提供整个函数的返回值,结束当前函数的执行。 return 语句也可以用在不返回值的函数中,例如在检测到错误时提前结束当前函数的执行。看
2024-10-07
词联想检查尊重内省

词联想检查尊重内省

英国/ntrspekt/美国/ntrspekt/ 六.反射;内省 vt.思考. 互联网反思/自省/反思/ 尊重 英国/rspekt/美国/rspekt/ 名词尊重,尊重;价值、尊重;方面,焦点;问候、尊敬(尊重) v. 尊重,钦佩;谨
2024-10-07
词语联想尊重内省回顾

词语联想尊重内省回顾

英国/rspekt/美国/rspekt/ 名词尊重,尊重;价值、尊重;方面,焦点;问候、尊敬(尊重) v. 尊重,钦佩;谨慎对待、尊重;遵守;避免损坏(或干扰) 国际。非正式的,令人惊奇的(出于尊重或认可的感叹词
2024-10-07
趣味词《暗示》一、词语信息1、音标:

趣味词《暗示》一、词语信息1、音标:

1.单词信息 1. 音标:[mpla] 2.释义: - vt.暗示;方法;必然包括。 - 短语和固定搭配:暗示含义;暗示重要性;暗示重要性。 - 示例:他的沉默表明他很生气。 (他的沉默表明他很生气。) 2.有
2024-10-07
请停止写信,请通过电子邮件回复我!请对方回复。你应该说什么?

请停止写信,请通过电子邮件回复我!请对方回复。你应该说什么?

回复 在写邮件的时候,我们希望对方能够尽快回复。我们经常在信的末尾加上一句话:“请回复我”,所以直接翻译成英文为: 错误:请回复我。 但“回复”这个词用错了。 Reply虽然是“
2024-10-07
“试一试”和“回复我”用地道的英语怎么说?

“试一试”和“回复我”用地道的英语怎么说?

尝试一下,这样的传统表达方式. 1.尝试一些(这是最常用的) 你应该尝试冲浪。 2. 尝试一下或者尝试一下 你的演技很糟糕,你确定要再试一次吗? 我不认为我擅长冲浪,但我会尝试一下。
2024-10-07
金东烈新迷你专辑主打曲《Reply》玄彬主演MV公开

金东烈新迷你专辑主打曲《Reply》玄彬主演MV公开

金东烈《Reply》 封面 歌手金东烈11日发行了全新迷你专辑《Reply ()》,并公开了玄彬主演的同名主打歌MV。 《Reply》是金东烈继2014年发行专辑《Reply》后时隔3年零3个月发
2024-10-07
英语讲授重点难点:回复与解答①r.

英语讲授重点难点:回复与解答①r.

reply用作不及物动词,意思是“回答”。 他回复你的信了吗?他给你回信了吗? 她笑了笑,但没有回答。她笑了笑,但没有回答。 Reply 用作及物动词,意思是“答复、答复、答复”,后面可
2024-10-07
动词回答和回复的分析

动词回答和回复的分析

1.answer的意思是“答案”。它是一个常用词,用途广泛。它可以用作及物动词和不及物动词。它仅响应问题或请求,包括口头、书面和行动响应。也可以用来指对他人的指责或指责的回
2024-10-07
学英语、赏国学杜甫《日暮》

学英语、赏国学杜甫《日暮》

双语古诗欣赏: 日暮 日落之后 唐杜甫 唐杜甫 牛羊早已倒下, 牛羊也开始休息, 每个人都关上了门。 所有茅草门都关闭了东西。 风月清夜, 微风徐徐,月光皎洁。 这个国家不再是我的
2024-10-07