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

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

第六十一节: 指针的中转站作用,地址自加法,地址偏移法。
【61.1 指针与批量数组的关系。】
指针和批量数据的关系,更像领导和团队的关系,领导是团队的代表,所以当需要描述某个团队的时候,
为了表述方便,可以把由 N 个人组成的团队简化成该团队的一个领导,用一个领导来代表整个团队,此时,
领导就是团队,团队就是领导。指针也一样,指针一旦跟某堆数据“绑定”了,那么指针就是这堆数据,这
堆数据就是该指针,所以在很多 PC 上位机的项目中,往往也把指针称呼为“句柄”,字面上理解,就是一句
话由 N 个文字组成,而“句柄”就是这句话的代表,实际上“句柄”往往是某一堆资源的代表。不管是把指
针比喻成“领导”、“代表”还是“句柄”,指针在这里都有“中间站”这一层含义。
【61.2 指针在批量数据的“中转站”作用。】
指针在批量数据处理中,主要是能节省代码容量,而且是非常直观的节省代码容量。为什么能节省代码
容量?是因为可以把某些重复性的具体实现的功能封装成指针来操作,请看下面的例子:
程序要求:根据一个选择变量 Gu8Sec 的值,要从三堆数据中选择对应的一堆数据放到数组 Gu8Buffer
里。当 Gu8Sec 等于 1 的时候选择第 1 堆,等于 2 的时候选择第 2 堆,等于 3 的时候选择第 3 堆。也就是“三
选一”。
第 1 种实现的方法:没有用指针,最原始的处理方式。如下:
code unsigned char Cu8Memory_1[3]={1,2,3}; //第 1 堆数据
code unsigned char Cu8Memory_2[3]={4,5,6}; //第 2 堆数据
code unsigned char Cu8Memory_3[3]={7,8,9}; //第 3 堆数据
unsigned char Gu8Sec=2; //选择的变量
unsigned char Gu8Buffer[3]; //根据变量来存放对应的某堆数据的数组
unsigned char i; //for 循环用到的变量 i
switch(Gu8Sec) //根据此选择变量来切换到对应的操作上
{
case 1: //第 1 堆
for(i=0;i<3;i++) //第 1 次出现 for 循环,用来实现“赋值”的“搬运数据”的动作。
{
Gu8Buffer[i]=Cu8Memory_1[i];
}
break;
case 2: //第 2 堆
for(i=0;i<3;i++) //第 2 次出现 for 循环,用来实现“赋值”的“搬运数据”的动作。
{
Gu8Buffer[i]=Cu8Memory_2[i];
}