从单片机基础到程序框架(全集 2019pdf版).pdf - 第239页
第五十六节: return 在函数中的作用以及四个容易被忽 略的功能。 【56.1 return 深入讲解。 】 return 在英 语单词中有 “返回” 的意 思, 上一节提到 , 凡是 “有输出” 的函数, 函数 内部必须有 一个 “re turn+ 变量或者常 量” 与之配套, 表示返回的 结果给外部 调用者接 收, 这个知识点 很容易理解 , 但是容易被忽略的 是另外四个 功能: 第一个是 re turn 语句隐含了 立即退出的…

十进制:5
十六进制:5
二进制:101
第 3 个数
十进制:5
十六进制:5
二进制:101
第 4 个数
十进制:5
十六进制:5
二进制:101
分析:
变量 a 为 5。
变量 b 为 5。
变量 c 为 5。
变量 d 为 5。
【55.9 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改“C 语言学习区域”的代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口的 51 学习板,通过电脑端的串口助手软件就可以观
察到不同的变量数值,详细方法请看第十一节内容。

第五十六节: return 在函数中的作用以及四个容易被忽略的功能。
【56.1 return 深入讲解。】
return 在英语单词中有“返回”的意思,上一节提到,凡是“有输出”的函数,函数内部必须有一个“return+
变量或者常量”与之配套,表示返回的结果给外部调用者接收,这个知识点很容易理解,但是容易被忽略的
是另外四个功能:
第一个是 return 语句隐含了立即退出的功能。退出哪?退出当前函数。只要执行到 return 语句,就马
上退出当前函数。即使 return 语句身陷多层 while 或者 for 的循环中,它也毫不犹豫立即退出当前函数。
第二个是 return 语句可以出现在函数内的任何位置。可以出现在第一行代码,也可以出现在中间的某
行代码,也可以出现在最后一行的代码,它的位置不受限制。很多初学者有个错觉,以为 return 只能出现
在最后一行,这是错的。
第三个是 return 语句不仅仅可以用在“有输出”的函数,也可以用在“无输出”的函数,也就是可以
用在前缀是 void 的函数里。回顾上一节,在“有输出”的函数里,return 后面紧跟一个变量或者常量,表
示返回的数,但是在“无输出”的函数里,因为是“无输出”,此时 return 后面不用跟任何变量或者常量,
这种写法也是合法的,表示返回的是空的。此时 return 主要起到立即退出当前函数的作用。
第四个是 return 语句可以在一个函数里出现 N 多次,次数不受限制,不一定必须只能一次。不管一个
函数内有多少个 return 语句,只要任何一个 return 语句被单片机执行到,就立即退出当前函数。
【56.2 中途立即退出的功能。】
下面的书写格式是合法的:
void HanShu(void) //“无输出”函数的定义。
{
语句 1;
return; //立即退出当前函数。对于这类“无输出”函数,return 后面没有跟任何变量或者常量。
语句 2;
return; //立即退出当前函数。对于这类“无输出”函数,return 后面没有跟任何变量或者常量。
语句 3;
return; //立即退出当前函数。对于这类“无输出”函数,return 后面没有跟任何变量或者常量。
}
分析:当 HanShu 此函数被调用时,单片机从“语句 1”往下执行,当遇到第一个 return 语句后,马上
退出当前函数。后面的“语句 2”和“语句 3”等代码永远不会被执行到。多说一句,大家仔细看看 return
后面跟了什么数没有?什么都没有。因为此函数的前缀是 void 的,是“无输出”的。
【56.3 身陷多层 while 或者 for 的循环时的惊人表现。】
下面的书写格式是合法的:
void HanShu(void) //“无输出”函数的定义。
{

语句 1;
while(1) //第一个循环
{
while(1) //第二个循环中的循环
{
return; //立即退出当前函数。
}
语句 2;
return; //立即退出当前函数。
}
语句 3;
return; //立即退出当前函数。
}
分析:当 HanShu 此函数被调用时,单片机从“语句 1”往下执行,先进入第一个循环,接着进入第二个
循环中的循环,然后遇到第一个 return 语句,于是马上退出当前函数。后面的“语句 2”和“语句 3”等代
码永远不会被执行到。此函数中,虽然表面看起来有那么多可怕的循环约束着,但是一旦碰上 return 语句
都是浮云,立刻退出当前函数。
【56.4 在“有输出”函数里的书写格式。】
把上面例子中“无输出”改成“有输出”的函数后:
unsigned char HanShu(void) //“有输出”函数的定义。
{
unsigned char a=9;
语句 1;
while(1) //第一个循环
{
while(1) //第二个循环中的循环
{
return a; //返回 a 变量的值,并且立即退出当前函数。
}
语句 2;
return a; //返回 a 变量的值,并且立即退出当前函数。
}
语句 3;
return a; //返回 a 变量的值,并且立即退出当前函数。
}
分析:因为此函数是“有输出”的函数,所以 return 语句后面必须配套一个变量或者常量,此例子中
配套的是 a 变量。当 HanShu 函数被调用时,单片机从“语句 1”往下执行,先进入第一个循环,接着进入第
二个循环中的循环,然后遇到第一个“return a”语句,马上退出当前函数。而后面的“语句 2”和“语句
3”等代码是永远不会被执行到的。再一次说明了,return 语句不仅有返回某数的功能,还有立即退出的重