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

unsigned c har b[3] ={3,4,5}; / /占用 3 个字节 unsigned c har c[4] ={6,7,8,9 }; //占用 4 个字 节 unsigned c har HeBing[s izeof(a)+ sizeof(b)+si zeof(c)]; //C 编译器自动 计算字节数 unsigned c har i; void main( ) //主函数 { for(i=0; i<sizeof(…

100%1 / 836
{
HeBing[i+0]=a[i]; //从 HeBing 数组的偏移量第 0 个地址开始存放。
}
for(i=0;i<3;i++) //这里 3,是人工计算出 b 占用 3 个字
{
HeBing[i+2]=b[i]; //这里 2 是人工计算出的偏移量。a 占用了数组 2 个字节。
}
for(i=0;i<4;i++) //这里 4,是人工计算出 c 占用 4 个字
{
HeBing[i+2+3]=c[i]; //这里 2 3 是人工计算出的偏移量,a b 占用了数组 2+3 个字节。
}
第二种情况:在使用 sizeof 宏函数时,利用 C 编译器自动来计算字节数和偏移量:
unsigned char a[2]={1,2}; //占用 2 个字节
unsigned char b[3]={3,4,5}; //占用 3 个字节
unsigned char c[4]={6,7,8,9}; //占用 4 个字
unsigned char HeBing[sizeof(a)+sizeof(b)+sizeof(c)];//C 编译器自动计算字节数
unsigned char i;
for(i=0;i<sizeof(a);i++) //C 编译器自动计算字节
{
HeBing[i+0]=a[i];
}
for(i=0;i<sizeof(b);i++) //C 编译器自动计算字节
{
HeBing[i+sizeof(a)]=b[i]; //C 编译器自动计算偏移量
}
for(i=0;i<sizeof(c);i++) //C 编译器自动计算字节
{
HeBing[i+sizeof(a)+sizeof(b)]=c[i]; //C 编译器自动计算偏移量
}
【69.3 例程练习和分析。
现在编写一个练习的程序
/*---C 语言学习区域的开始。-----------------------------------------------*/
unsigned char a[2]={1,2}; //占用 2 个字节
unsigned char b[3]={3,4,5}; //占用 3 个字节
unsigned char c[4]={6,7,8,9}; //占用 4 个字
unsigned char HeBing[sizeof(a)+sizeof(b)+sizeof(c)];//C 编译器自动计算字节数
unsigned char i;
void main() //主函数
{
for(i=0;i<sizeof(a);i++) //C 编译器自动计算字节
{
HeBing[i+0]=a[i];
}
for(i=0;i<sizeof(b);i++) //C 编译器自动计算字节
{
HeBing[i+sizeof(a)]=b[i]; //C 编译器自动计算偏移量
}
for(i=0;i<sizeof(c);i++) //C 编译器自动计算字节
{
HeBing[i+sizeof(a)+sizeof(b)]=c[i]; //C 编译器自动计算偏移量
}
for(i=0;i<sizeof(HeBing);i++) //利用宏 sizeof 计算出 HeBing 数组所占用的字节数
{
View(HeBing[i]); //把 HeBing 所有数据挨个依次全部发送到电脑端观
}
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 个数
十进制:8
十六进制:8
二进制:1000
9 个数
十进制:9
十六进制:9
二进制:1001
分析:
HeBing[0]为 1。
HeBing[1]为 2。
HeBing[2]为 3。
HeBing[3]为 4。
HeBing[4]为 5。