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