2012-01-20 135 views
6

當在c中創建指針數組時,添加圓括號的效果是什麼?C指針數組

例如

int (*poi)[2];

VS

int *poi[2];

+0

節省鍵盤上的磨損 –

回答

8

指針的2 int秒的數組:

int (*poi)[2]; 

兩個陣列個指針:

int *poi[2]; 

通常數組比指針更高的優先級,但如果添加括號然後將鼠標指針來「先」。

+0

..真的嗎? []是綁定更緊密我不明白爲什麼這 – lynnyilu

+0

@LynnYiLu - 只是C標準的定義方式。 – Hogan

+1

http://binglongx.wordpress.com/2009/01/25/how-to-read-a-cc-declaration/ – Hogan

0

括號綁定比*更緊,所以第一個是int指針數組,而第二個是指向int數組的指針。

+1

你有那個回到前面,不是嗎? –

+0

我想其他的方法。 –

2

索引運算符[]的結合強度大於去磁運算符*

int *poi[2] 

翻譯爲:

如果你看到POI,適用於[x],然後通過解引用的*結果,你會得到一個int。 所以它是一個2個int指針的數組。

int (*poi)[2] 

的括號迫使*首先被施加。 因此,隨時poi被使用,如果您先應用*,然後[x]您將得到一個int。 所以它是一個指向數組2 int的指針。