在标准C的整型变量是32位,也就是4字节。但是,在在某些编译平台上,整型的长度则取决于硬件结构。在嵌入式平台上,往往还有short 等类型,一般来说,对于变量区分为有符号型与无符号型。有符号型,由于最高位为符号位:
short 内存占两字节,范围为-2^15~(2^15-1) int 内存占四字节,范围为-2^31~(2^31-1)
而对于无符号型:最高位不表示符号位
unsigned short 占两字节,范围为0~2^16-1 unsigned int 占四个字节,范围为0~2^32-1
比较特殊的是指针
unsigned char *pChar;unsigned short *pShort;unsigned int * pInt;
无论指向的数据是什么类型,由于指针存储的是变量的地址,在32bit系统中,
*pChar、*pShort 和 *pInt 均占用32字节。
而指针数组的每个元素均为指针,所以,指针数组所占用内存的大小:
指针数组元素内存大小 * 元素个数
我们首先声明几个数组:
unsigned char Cmd1_Data[10]={0x68,0x13,0x00,0xDF,0x16};
unsigned char Cmd2_Data[10]={0x68,0x14,0x00,0xDF,0x16};
unsigned char Cmd3_Data[10]={0x68,0x15,0x00,0xDF,0x16};
unsigned char Cmd4_Data[10]={0x68,0x16,0x00,0xDF,0x16};
在声明一个指针数组:
unsigned char *Cmd[] ={Cmd1_Data,Cmd2_Data,Cmd3_Data};
我们来验证下存储空间的大小:
int i,len;
unsigned char *pcmd;
int *plen = &len;
pcmd=Cmd[0];
len = *pcmd;
printf(" DL645Cmd size = %02d, pcmd size = %02d,plen size = %02d i size = %02d \n,",sizeof(Cmd),sizeof(pcmd),sizeof(plen),sizeof(i));
运行后可以看到:

可以看到,Cmd的大小为16,为4个指针元素的大小之和。怎么通过指针数组访问各个数组的元素昵?
我们以访问第二个数组为例,功能实现如下:
num = 1 ;//数组下标从0开始,所以,第二个数组下标为1pcmd=Cmd[num ];for(i=0;i
如果要访问其他数组,可以动态更改num的值,或做成一个循环读取全部数组元素的值即可。