从单片机基础到程序框架(全集 2019pdf版) - 第264页
unsigned c har b; unsigned c har c; unsigned c har d; void main( ) //主函数 { pu8=&a; // 指针与普通 变量发生关联 (或者说绑定 ) 。 *pu8=2; // 通过指针这 个载体来处理 a 这个变量,此时 a 从原 来的 0 变成了 2。 pu8=&Buf fer[0]; //处理 “装的地址” 。把 Buffe r[0]变量的地址 装在指…

发现它的好处。
【60.5 指针与数组关联(绑定)时省略“&和下标[0]”的写法。】
指针与数组关联的时候,通常是跟数组的第 0 个元素的地址关联,此时,可以把数组的“&和下标[0]”
省略,比如:
unsigned char* pu8;
unsigned char Buffer[3];
pu8=Buffer; //此行代码省略了“&和下标[0]”,等效于 pu8=&Buffer[0];
【60.6 带 const 关键字的常量指针。】
指针也可以跟常量关联起来,处理常量,但是常量只能“读”不能“写”,所以通过指针操作常量的时
候也是只能“读”不能“写”。操作常量的指针用 const 关键词修饰,强调此指针只有“读”的操作。例子
如下:
const unsigned char* pCu8; //常量指针
code char Cu8Buffer[3]={5,6,7}; //常量数组
unsigned char b;
unsigned char c;
unsigned char d;
pCu8=Cu8Buffer; //此行代码省略了“&和下标[0]”,等效于 pCu8=&Cu8Buffer[0];
b=*pCu8; //读“装的地址的所在数据”。b 等于 5。
pCu8++; //所装的地址自加 1,跟 Cu8Buffer[1]关联
c=*pCu8; //读“装的地址的所在数据”。c 等于 6。
pCu8++; //所装的地址自加 1,跟 Cu8Buffer[2]关联
d=*pCu8; //读“装的地址的所在数据”。d 等于 7。
【60.7 例程练习和分析。】
现在编一个练习程序来熟悉指针的基础知识。
/*---C 语言学习区域的开始。-----------------------------------------------*/
unsigned char* pu8; //针对 unsigned char 类型变量的指针。凡是指针都是占 4 个字节!
unsigned char a=0; //普通的变量。
unsigned char Buffer[3]; //普通的数组,内含 3 个变量,它们地址是相连的。
const unsigned char* pCu8; //常量指针
code char Cu8Buffer[3]={5,6,7}; //常量数组

unsigned char b;
unsigned char c;
unsigned char d;
void main() //主函数
{
pu8=&a; //指针与普通变量发生关联(或者说绑定)。
*pu8=2; //通过指针这个载体来处理 a 这个变量,此时 a 从原来的 0 变成了 2。
pu8=&Buffer[0]; //处理“装的地址”。把 Buffer[0]变量的地址装在指针这个载体里。
*pu8=1; //处理“装的地址的所在数据”。此时 Buffer[0]变成了 1。
pu8++; //处理“装的地址”。这里是“地址”自加 1,相当于指针此时装的是 Buffer[1]的地址。
*pu8=2; //处理“装的地址的所在数据”。此时 Buffer[1]变成了 2。
pu8++; //处理“装的地址”。这里是“地址”自加 1,相当于指针此时装的是 Buffer[2]的地址。
*pu8=3; //处理“装的地址的所在数据”。此时 Buffer[2]变成了 3。
pCu8=Cu8Buffer; //此行代码省略了“&和下标[0]”,等效于 pCu8=&Cu8Buffer[0];
b=*pCu8; //读“装的地址的所在数据”。b 等于 5。
pCu8++; //所装的地址自加 1,跟 Cu8Buffer[1]关联
c=*pCu8; //读“装的地址的所在数据”。c 等于 6。
pCu8++; //所装的地址自加 1,跟 Cu8Buffer[2]关联
d=*pCu8; //读“装的地址的所在数据”。d 等于 7。
View(a); //把第 1 个数 a 发送到电脑端的串口助手软件上观察。
View(b); //把第 2 个数 b 发送到电脑端的串口助手软件上观察。
View(c); //把第 3 个数 c 发送到电脑端的串口助手软件上观察。
View(d); //把第 4 个数 d 发送到电脑端的串口助手软件上观察。
View(Buffer[0]); //把第 5 个数 Buffer[0]发送到电脑端的串口助手软件上观察。
View(Buffer[1]); //把第 6 个数 Buffer[1]发送到电脑端的串口助手软件上观察。
View(Buffer[2]); //把第 7 个数 Buffer[2]发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/

在电脑串口助手软件上观察到的程序执行现象如下:
开始...
第 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。