根据解析规则,上述声明器解析为指向int[5]型变量的指针
也就是指向大小为5的int型数组
所谓指向,私以为是p
=
&...的形式。
比如
123int arr[10][5];int (*p)[5];p = &arr[0];
注意arr是二维数组,其声明等同于int
(arr[10])[5],所以arr[0]的类型就是int[5]。故上述语句将p指向了一个int[5]型的变量。
如果arr不是如此声明,比如
123int arr[10][4];int (*p)[5];p = &arr[0];
此时编译器可以给出一个警告。
顺便说一句,C的声明器中,数组声明器和函数声明器后置真是奇葩。
不如Java等等直观。如果C的声明语法像这样:
1int[][] a;
就能一眼看出a是什么了。