从单片机基础到程序框架(全集 2019pdf版).pdf - 第279页
pu16=(un signed int *)&Gu 8BufferABC[1 ]; //指针 跟数组的第 1 个位置“ 绑定” 起来。 *pu16=b; //把 b 的 2 个字节放在 数组第 1、2 这 两个位置 。 pu32=(un signed long *)&G u8BufferABC[ 3]; //指针跟数组 的第 3 个位 置“绑定”起来 。 *pu32=c; //把 c 的 4 个字节放在 数组第 3、4、…

unsigned int e;
unsigned long f;
unsigned char *pu8; //引入的 unsigned char 类型指针
unsigned int *pu16; //引入的 unsigned int 类型指针
unsigned long *pu32; //引入的 unsigned long 类型指针
pu8=&Gu8BufferDEF[0]; //指针跟数组的第 0 个位置“绑定”起来。
d=*pu8; //从数组第 0 位置提取单字节完整的 d 变量。
pu16=(unsigned int *)&Gu8BufferDEF[1]; //指针跟数组的第 1 个位置“绑定”起来。
e=*pu16; //从数组第 1,2 位置提取双字节完整的 e 变量。
pu32=(unsigned long *)&Gu8BufferDEF[3]; //指针跟数组的第 3 个位置“绑定”起来。
f=*pu32; //从数组第 3,4,5,6 位置提取四字节完整的 f 变量。
【63.3 例程练习和分析。】
现在编一个练习程序。
/*---C 语言学习区域的开始。-----------------------------------------------*/
unsigned char a=0x01;
unsigned int b=0x0203;
unsigned long c=0x04050607;
unsigned char Gu8BufferABC[7]; //存放 3 个不同长度变量的数组
unsigned char Gu8BufferDEF[7]={0x01,0x02,0x03,0x04,0x05,0x06,0x07}; //注意大小端的问题
unsigned char d;
unsigned int e;
unsigned long f;
unsigned char *pu8; //引入的 unsigned char 类型指针
unsigned int *pu16; //引入的 unsigned int 类型指针
unsigned long *pu32; //引入的 unsigned long 类型指针
void main() //主函数
{
//第 1 类例子:化整为零。
pu8=&Gu8BufferABC[0]; //指针跟数组的第 0 个位置“绑定”起来。
*pu8=a; //把 a 的 1 个字节放在数组第 0 个位置。

pu16=(unsigned int *)&Gu8BufferABC[1]; //指针跟数组的第 1 个位置“绑定”起来。
*pu16=b; //把 b 的 2 个字节放在数组第 1、2 这两个位置。
pu32=(unsigned long *)&Gu8BufferABC[3]; //指针跟数组的第 3 个位置“绑定”起来。
*pu32=c; //把 c 的 4 个字节放在数组第 3、4、5、6 这四个位置。
//第 2 类例子:化零为整。
pu8=&Gu8BufferDEF[0]; //指针跟数组的第 0 个位置“绑定”起来。
d=*pu8; //从数组第 0 位置提取单字节完整的 d 变量。
pu16=(unsigned int *)&Gu8BufferDEF[1]; //指针跟数组的第 1 个位置“绑定”起来。
e=*pu16; //从数组第 1,2 位置提取双字节完整的 e 变量。
pu32=(unsigned long *)&Gu8BufferDEF[3]; //指针跟数组的第 3 个位置“绑定”起来。
f=*pu32; //从数组第 3,4,5,6 位置提取四字节完整的 f 变量。
View(Gu8BufferABC[0]); //把第 1 个数 Gu8BufferABC[0]发送到电脑端的串口助手软件上观察。
View(Gu8BufferABC[1]); //把第 2 个数 Gu8BufferABC[1]发送到电脑端的串口助手软件上观察。
View(Gu8BufferABC[2]); //把第 3 个数 Gu8BufferABC[2]发送到电脑端的串口助手软件上观察。
View(Gu8BufferABC[3]); //把第 4 个数 Gu8BufferABC[3]发送到电脑端的串口助手软件上观察。
View(Gu8BufferABC[4]); //把第 5 个数 Gu8BufferABC[4]发送到电脑端的串口助手软件上观察。
View(Gu8BufferABC[5]); //把第 6 个数 Gu8BufferABC[5]发送到电脑端的串口助手软件上观察。
View(Gu8BufferABC[6]); //把第 7 个数 Gu8BufferABC[6]发送到电脑端的串口助手软件上观察。
View(d); //把第 8 个数 d 发送到电脑端的串口助手软件上观察。
View(e); //把第 9 个数 e 发送到电脑端的串口助手软件上观察。
View(f); //把第 10 个数 f 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
第 1 个数
十进制:1
十六进制:1
二进制:1

第 2 个数
十进制:2
十六进制:2
二进制:10
第 3 个数
十进制:3
十六进制:3
二进制:11
第 4 个数
十进制:4
十六进制:4
二进制:100
第 5 个数
十进制:5
十六进制:5
二进制:101
第 6 个数
十进制:6
十六进制:6
二进制:110
第 7 个数
十进制:7
十六进制:7
二进制:111
第 8 个数
十进制:1
十六进制:1
二进制:1
第 9 个数
十进制:515
十六进制:203
二进制:1000000011
第:个数(这里是第 10 个数。本模块程序只支持显示第 1 到第 9 个,所以这里没有显示“10”)
十进制:67438087
十六进制:4050607