[Quote=引用楼主 xuanxiao_ningjing 的帖子:]
#include <stdio.h>
int main() {
unsigned char a[]={1,2,3,4,5,6,7,8};
unsigned int *p=(unsigned int *)a+1;
printf("%x\n",*p);
}
输出的答案我理解不了,为什么是 8070605?
[/Quote]
a代表的是数组的首地址,unsigned int *p=(unsigned int *)a+1;这句定义个指针p,存放的是数组的首地址地址加一,为了类型相容,将a转换成unsigned int *类型的,所以这里的加1,加的是unsigned int 所占的字节数.定义的数组是usigned char型,但*p将p指向后的sizeof(unsigned int)个字节,按照unsigned int 型解释。