代碼:
#include <stdio.h>
int main() {
int i, arr[10];
printf("%p\n", &i);
for (i = 0; i <= 10; i++) {
printf("&arr[%d]=%p\n", i, &arr[i]);
}
return 0;
}
0019FF3C &i 0019FF14 &arr[0] 0019FF18 &arr[1] ... 0019FF38 &arr[9] 0019FF3C &arr[10] ← 與 &i 相同!
arr 低地址,i 高地址。&arr[10] 越界訪問恰好落在 i 的地址上,驗證了上一篇「死循環」成因。int 4 字節對齊,地址差均為 4(0x4)。通過打印地址,可直觀理解:
建議在調試器中觀察內存窗口,結合反彙編加深理解。