C指针数组

问题描述:

当在c中创建指针数组时,添加圆括号的效果是什么?C指针数组

例如

int (*poi)[2];

VS

int *poi[2];

+0

节省键盘上的磨损 –

指针的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

括号绑定比*更紧,所以第一个是int指针数组,而第二个是指向int数组的指针。

+1

你有那个回到前面,不是吗? –

+0

我想其他的方法。 –

索引运算符[]的结合强度大于去磁运算符*

int *poi[2] 

翻译为:

如果你看到POI,适用于[x],然后通过解引用的*结果,你会得到一个int。 所以它是一个2个int指针的数组。

int (*poi)[2] 

的括号迫使*首先被施加。 因此,随时poi被使用,如果您先应用*,然后[x]您将得到一个int。 所以它是一个指向数组2 int的指针。