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

GtMould. c=0; GtMould. d=0; GtMould. e=0; //函数的调用 ,实现 5 个变 量都“自加 1”的功 能。加 “&”表示“传址 ”的方 式进入函数内 部。 Add_One( &GtMould); //只 有 1 个结构体指 针,大大减少 了接口 参数。 } 【74.3 例程练习和分析。 】 现在编写一 个“以结 构体指针为函 数接口参数 ”的练习程序 。 /*---C 语言学习区 域…

100%1 / 836
c=0;
d=0;
e=0;
//函数的调用,实现 5 个变量都“自加 1”的功能。加“&”表示“传址”的方式进入函数内部。
Add_One(&a, //第 1 个接口参数
&b, //第 2 个接口参数
&c, //第 3 个接口参数
&d, //第 4 个接口参数
&e); //第 5 个接口参数
}
第二种方式:把 N 个全局变量打包成一个结构体,以“结构体指针”的方式进入函数内部。
//函数的声明
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 个结构体指针,大大减少了接口参数。
}
【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 个数