關於C++多維數組已經有很多問題已經問過,雖然沒有一個A)完全解釋了我想要問的東西或B)也許我只是不明白它。C++多維數組和指針名稱包圍
我的問題:
int (*ip)[4];
我是理解在這種情況下將圍繞* IP括號的原因的問題。綜觀多維數組:
int ia[3][4];
int *ip = &ia[2];
int *ip2[4] = &ia[2];
int (*ip3)[4] = &ia[2];
IP,IP2,IP3和都是旨在在IA位置以指向該陣列的第一個元素[2]。
- IA [2]僅僅是一個指針,它指向數組的第一個元素,依此& IA [2]是指針的地址?正確?
- 在我看來,ip可以使用,因爲它會以同樣的方式工作,char *會工作...是嗎?沒有?
- 對我來說ip2不正確。對我而言,ip2是一個指向數組的指針數組,當我想要的是一個指向int數組的指針時。
- 我知道ip3是正確的。爲什麼?因爲這本書是這麼說的。就是這樣。我不明白括號的意義。
那麼括號如何改變呢?我真的在這裏進行了一個概念性的解釋,所以我可以在將來理解和重用這個概念。
再次感謝您的時間每個人,我在這裏仍然是新的,所以如果有什麼我可以做,以改善我的問題,請讓我知道。
[cdecl](http://cdecl.org/)可能會在未來幫助你一些 –
第四個是正確的,因爲在C++中運算符[]的優先級高於運算符*,所以你得到一個4個指向int的數組 – Yappie
@SethCarnegie cdecl太棒了!謝謝! – Jace