說,我們有以下代碼:數組c地址混淆
int main(){
int a[3]={1,2,3};
printf(" E: 0x%x\n", a);
printf(" &E[2]: 0x%x\n", &a[2]);
printf("&E[2]-E: 0x%x\n", &a[2] - a);
return 1;
}
當編譯和運行的結果是如下:
E: 0xbf8231f8
&E[2]: 0xbf823200
&E[2]-E: 0x2
我明白& E的結果[2]其是8加上數組的地址,因爲索引2和int類型(在我的32位系統上是4個字節),但我無法弄清楚爲什麼最後一行是2而不是8?
另外,什麼類型的最後一行應該是 - 整數或整數指針?
我不知道是否這是使這種怪癖的C型系統(有點鑄造)?
這幾乎是一個重複http://stackoverflow.com/questions/759663/pointer-arithmetic-in-c – finnw 2009-07-03 05:38:44
什麼printf(「E:0x%x \ n」,&a); – dashesy 2012-11-29 19:17:49