声明指向数组的指针时是否需要括号?

问题描述:

我只是在看这个问题:声明指向数组的指针时是否需要括号?

How to assign a multi-dimensional array to a temporary variable?

该解决方案最终使用的线路:

int a[3][2] = {{1, 2}, {11, 12}, {21, 22}}; 
... 
int (*b)[2] = a; 

为“分配一个静态分配的,多维数组给一个临时变量。 “

我有点困惑的行的语法:

int (*b)[2] = a; 

在这种情况下,需要括号来得到正确的效果,如果是这样,为什么呢?有没有办法在不使用它们的情况下获得相同的结果?

此:

int (*b)[2] 

b宣告作为一个指针,指向两个int秒的阵列。这是不一样:

int *b[2] 

它声明b作为两个指针-TO- int的阵列。

您需要第一个表单才能正确执行指针算术。

+0

谢谢!出于某种原因,我无法在脑海中保持这种直觉。 –

+2

@woote:http://cdecl.org值得加书签。 –

+0

是的,我只是从其他问题中检查出来 - 这是一个非常酷的工具。 –