从单片机基础到程序框架(全集 2019pdf版).pdf - 第323页
GtMould. c=0; GtMould. d=0; GtMould. e=0; //函数的调用 ,实现 5 个变 量都“自加 1”的功 能。加 “&”表示“传址 ”的方 式进入函数内 部。 Add_One( &GtMould); //只 有 1 个结构体指 针,大大减少 了接口 参数。 View(GtM ould.a); //在电 脑端观 察结构体成员 Gt Mould.a 的数 值。 View(GtM ould.b…

GtMould.c=0;
GtMould.d=0;
GtMould.e=0;
//函数的调用,实现 5 个变量都“自加 1”的功能。加“&”表示“传址”的方式进入函数内部。
Add_One(&GtMould); //只有 1 个结构体指针,大大减少了接口参数。
}
【74.3 例程练习和分析。】
现在编写一个“以结构体指针为函数接口参数”的练习程序。
/*---C 语言学习区域的开始。-----------------------------------------------*/
//函数的声明
void Add_One(struct StructMould *ptMould); //只有 1 个结构体指针,大大减少了接口参数。
//结构体的“造模”
struct StructMould
{
unsigned char a;
unsigned char b;
unsigned char c;
unsigned char d;
unsigned char e;
};
struct StructMould GtMould; //生成一个结构体变量,内部包含了 5 个全局变量 a,b,c,d,e。
//函数的定义
void Add_One(struct StructMould *ptMould) //只有 1 个结构体指针,大大减少了接口参数。
{
ptMould->a=ptMould->a+1; //实现“自加 1”的功能。
ptMould->b=ptMould->b+1;
ptMould->c=ptMould->c+1;
ptMould->d=ptMould->d+1;
ptMould->e=ptMould->e+1;
}
void main() //主函数
{
//5 个全局变量的结构体成员都初始化为 0
GtMould.a=0;
GtMould.b=0;

GtMould.c=0;
GtMould.d=0;
GtMould.e=0;
//函数的调用,实现 5 个变量都“自加 1”的功能。加“&”表示“传址”的方式进入函数内部。
Add_One(&GtMould); //只有 1 个结构体指针,大大减少了接口参数。
View(GtMould.a); //在电脑端观察结构体成员 GtMould.a 的数值。
View(GtMould.b); //在电脑端观察结构体成员 GtMould.b 的数值。
View(GtMould.c); //在电脑端观察结构体成员 GtMould.c 的数值。
View(GtMould.d); //在电脑端观察结构体成员 GtMould.d 的数值。
View(GtMould.e); //在电脑端观察结构体成员 GtMould.e 的数值。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
第 1 个数
十进制:1
十六进制:1
二进制:1
第 2 个数
十进制:1
十六进制:1
二进制:1
第 3 个数
十进制:1
十六进制:1
二进制:1
第 4 个数
十进制:1
十六进制:1
二进制:1
第 5 个数

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