我試圖理解爲什麼下面的C++代碼不編譯增量指針數組
int main() {
int a[10];
int (*p)[10] = &a;
int *q = static_cast<int *>(++p);
}
如果不是很明顯,我試圖做的是找到一個指向數組的結尾通過使用指針算術。
我的理解到目前爲止,p
有十個整數數組的指針類型,表達式++p
也有。通常,我可以將一個int數組賦給一個指向int的類型指針變量,但是這個失敗在增加的指針++p
上。
我第一次嘗試沒有static_cast
但也沒有工作。
你可以做' p'一個'int *':'int * p = a; int * q = ++ p;' –
@GregKikola是的,我可以這樣做,但那不是我想要做的。我認爲這兩種情況下的指針算術應該是不同的。 –
哦,我誤解了,我沒有看到關於想讓'q'指向數組結尾的提示。在這種情況下,你可以做'int * q = a + 10;'。或者,在C++ 11中,'int * q = std :: end(a);'(只包含'')。 –