關於 int a[10]; 問下面哪些不可以表示 a[1] 的地址? A. a+sizeof(int) B. &a[0]+1 C. (int*)&a+1 D. (int*)((char*)&a+sizeof(int))
答案:A. a+sizeof(int)
解析: A. a+sizeof(int) // 不正確, 在32位機器上相當於指針運算 a + 4 B. &a[0]+1 // 正確,數組首元素地址加1,根據指針運算就是a[1]的地址 C. (int*)&a+1 // 正確,數組地址被強制類型轉換為int*,然后加1,這樣和B表示的一個意思 D. (int*)((char*)&a+sizeof(int)) // 正確,數據地址先被轉換為char*,然后加4,根據指針運算公式,向前移動4 * sizeof(char),之后被轉換為int*,顯然是a[1]的地址