1. int (*p)[4]
表示 p 是一个指针变量,他指向包含 4 个元素的一维数组。
2. int *p[4]
表示 *p[4]是指针数组
----------------------------------------------------
这个问题我们采用以下的方式来理解它就一目了然了:
对于 int (*p)[4], 我们可以先将 (*p) 看成是一个整体,并用 a 代替 变为 int a [4]. 很容易看出,a 有4个元素,每个 元素为整型;那么 *P 有4个元素,每个元素也为整型。也就是 p所指的对象是有 4个整形元素的数组。因此,此时p只能只想一个包含 4个元素的整型数组。p+i 就是二维数组第i行的地址。
对于int *p[4] 由于[] 运算级别高,因此p先于[]结合,是数组有4个元素,然后再与前面的 *结合, *p[4] 是指针数组