从单片机基础到程序框架(全集 2019pdf版).pdf - 第301页
HeBing[5 ]为 6。 HeBing[6 ]为 7。 HeBing[7 ]为 8。 HeBing[8 ]为 9。 【69.4 如何在单片机上练习本章节 C 语言程序?】 直接复制前 面章节中第十 一节的模板程 序, 练习代码时只需要 更改 “ C 语言学习区 域” 的 代码就可 以了, 其它 部分的 代码 不要动 。编 译后 ,把程 序下 载进带 串口 的 51 学 习板, 通过 电脑 端的串 口助 手软件 就可 以观 察到不同的…

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

第七十节: “万能数组”的结构体。
【70.1 结构体与数组。】
结构体是数组,但不是普通的数组,而是一种“万能数组”。普通数组,是依靠严格的数组下标(类似
编号)来识别某个具体单元的(或者称“寻址”),期间,如果要往数组插入或者删除某些单元,后面所有单
元的下标编号都会发生改变,牵一发而动全身,后面其它单元的下标序号自动重新排列,原来某个特定的单
元的下标发生了改变,也就意味着“名字”发生了改变,这种情况在编写程序的时候,就意味着很多代码需
要随着更改调整,给程序员带来很多不便。怎么办?结构体此时横空出世,扭转了这种“不便”的局面。之
所以称结构体为“万能数组”,是因为结构体内部没有“下标编号”,只有名字。结构体与普通数组的本质区
别是,结构体是靠“名字”来寻址的,不管你往结构体里插入或者删除某些单元,其它单元的“名字”不会
发生改变,隔离效果好,左邻右舍不会受影响。除此之外,结构体内部的成员变量是允许出现不同的数据类
型的,比如 unsigned char,unsigned int,unsigned long 这三种数据类型的变量都可以往同一个结构体里
面“填充”,不受类型的局限,真正做到“万能”级。而普通数组就没有这个优越性,普通数组要么清一色
都是 unsigned char,要么清一色都是 unsigned int,要么清一色都是 unsigned long,不能像结构体这么
“混合型”的。结构体的这种优越性,在大型程序的升级和维护时体现得非常明显。
【70.2 “造模”和“生成”和“调用”。】
结构体的使用,有三道标准工序“造模”和“生成”和“调用”。塑胶外壳,必须先开模具(造模),然
后再用模具印出外壳(生成),再把外壳应用于日常生活中(调用)。结构体也一样,先“造”结构体的“模”
(造模),再根据这个“模”来“生成”一个结构体变量(生成),然后在某函数里使用此变量(调用)。例
子如下:
struct StructMould //“造模”
{
unsigned char u8Data_A;
unsigned int u16Data_B;
unsigned long u32Data_C;
};
struct StructMould GtMould; //“生成”一个变量 GtMould。
void main()
{
GtMould.u8Data_A=1; //依靠成员的“名字”来“调用”
GtMould.u16Data_B=2; //依靠成员的“名字”来“调用”
GtMould.u32Data_C=3; //依靠成员的“名字”来“调用”
while(1)
{
}
}