从单片机基础到程序框架(全集 2019pdf版).pdf - 第225页

第五十三节: 使用函数的三要素和执行顺序。 【53.1 函数的十大关联部件。 】 函数是什么 ?我很难用一 句话给它下定 义, 哪怕我真能 用一句话定义 了, 初学者也很难从 一句话的 定义 中 “格”出函数之理。 之所 以函数有如此 玄机,确实因为它包罗万 象,涉及的内容非常多,就像要我去定义 什么是中国, 我也没法用一句话 去定义, 只有长大了 慢慢了解它 的地理文化历 史, 你才会对咱中国有 深刻的 认识。 函数也是如 此, 虽然…

100%1 / 836
十六进制:3
二进制:11
分析:
变量 a 3。单片机从 case 2 口进来,因为 case 2 case 3 没有 break 句,直到遇到 case 4
break 语句才结束 switch 程序体因此整个过程遇到 3 “a++”语句,因此变量 a 的“自加一”执行
3 次后从 0 变成 3
【52.8 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改C 语言学习区域”代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口 51 习板,通过电脑端的串口助手软件就可以观
察到不同的变量数值,详细方法请看第十一节内容。
第五十三节: 使用函数的三要素和执行顺序。
【53.1 函数的十大关联部件。
函数是什么?我很难用一句话给它下定义,哪怕我真能用一句话定义了,初学者也很难从一句话的定义
“格”出函数之理。之所以函数有如此玄机,确实因为它包罗万象,涉及的内容非常多,就像要我去定义
什么是中国,我也没法用一句话去定义,只有长大了慢慢了解它的地理文化历史,你才会对咱中国有深刻的
认识。函数也是如此,虽然我不能用一句话定义函数,但是函数跟十大部件有关,只要今后不断学习和运用,
对十大部件各个击破直到全部“通关”总有一天你会感悟到函数的精髓。现在先把十大部件列出来,让
家有一个感性的认识,它们是:函数体,函数接口,return 语句,栈,全局变量,普通局部变量,静态局部
变量,单个变量的指针数组的指针,结构体的指针。本节讲的“使用函数的三要素和执行顺序”就是属于
“函数体”这个部件的内容。
【53.2 使用函数的三要素。
有的人习惯把函数称为程序,比如主程序,子程序,这时的主程序对应主函数,子程序对应子函数,
一回事,只是每个人的表达习惯不一样而已。使用函数的三要素是声明,定义调用。每次新构造一个函数
时,尽量遵守这个三个要素来做就可以减少一些差错什么叫函数的声明定义,调用?为了让大家有一
感性的认识,请先看下面这个例子:
/*---C 语言学习区域的开始。-----------------------------------------------*/
void HanShu(void); //子函数声明的第一区域
unsigned char a; //全局变量定义的第二区域
unsigned char b;
unsigned char c;
void HanShu(void) //子函数定义的第三区域
{
a++; //子函数的代码语句
b=b+5;
c=c+6;
}
void main() //主函
{
a=0;
b=0;
c=0;
HanShu() ; //子函数被调用的第四区域
c=a+b;
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
分析:上述例子中,从书写代码区域的角度来寻找函数的大概规律,从上往下:
第一区域:写子函数 HanShu 声明。
第二区域:全局变量的定义。
第三区域:子函数 HanShu 的定义。
第四区域: main 函数里对子函数 HanShu 的调用。
【53.3 子函数被其它函数调用时候的执行顺序。
子函数被其它函数调用时子函数的名字就相当于一个跳转地址,而子函数的定义部分就是要跳转的实
际地址,单片机在主函数里遇到子函数名字就直接跳转到子函数定义那里执行子函数内部的代码,行完
子函数后再返回到主函数,此时返回到主函数哪里呢?答:因为子函数已经被执行了一次所以返回到主函
数中的子函数名字后面,然后继续往下执行 main 函数其它剩余的代码。请看下面这个代码的执行顺序,
目了然:
/*---C 语言学习区域的开始。-----------------------------------------------*/
void HanShu(void); //子函数的声明
void HanShu(void) //子函数的定
{
语句 1;
语句 2;
}
void main() //主函数
{
语句 3;
HanShu() ; //子函数的被调用
语句 4;
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
执行顺序分析:单片机从主函数 main 那里进来往下执行,先执行语句 3”接着遇到 HanShu 名字的跳
转地址,然后马上跳转到 HanShu 的定义部分,执行“语句 1”,“语句 2执行完子函 HanShu 的定义部
分,就马上返回到主函数,继续执行 HanShu 名字后面的“语句 4”。整个执行语句的先后顺序如下
语句 3;
语句 1;
语句 2;