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这个指针操作代码为什么会产生33554432?
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这个指针操作代码为什么会产生33554432?
假设我们有4个字节的整数,存储在小端方式(最低字节在前),阵列存储(以字节为单位)为:
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
。
http://stackoverflow.com/questions/18518018/how-is-an-integer-stored-in-memory – user23127