int *q,a[10]={1,2,3,4,5,6,7,8,9,0};
char *p;
p=(char*)a;
p++;
q=(int*)p;
printf("\n%d",*q);
请为我解释为什么显示为33554432
答案 0 :(得分:4)
假设我们有4字节整数,以little-endian方式存储(最低字节优先),数组存储(以字节为单位):
01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 ...etc.
p
指向第二个字节,q
指向从同一位置开始的整数,因此:
00 00 00 02
因为我们从低到高存储,所以整数是:
0x02000000
以十六进制表示,或33554432
以十进制表示。