数组相当于一个容器,能够存放大多数类型的对象,例如可以存放指针。又因为数组本身就是对象,所以允许定义
数组的指针以及数组的引用。对于定义指针的数组比较简单和直接,但是定义数组的指针和数组的引用相对比较复
杂一些。
下面列举一些简单的声明:
int *ptrs[10]; //ptrs是含有10个整型指针的数组
int &refs[10] = b; //错误的定义,不存在引用的数组
int (*Parray)[10] = &arr; //Parray指向一个含有10个整数的数组
int (&arrRef)[10] = arr; //arrRef引用一个含有10个整数的数组
默认情况下,类型修饰符从右向左依次绑定。对于ptrs来说,理解过程为:首先我们定义一个大小为10的数组,数
组的名称是ptrs,然后数组中存放的是int型的指针变量。
但是对于Parray,从右向左理解困难,所以就数组而言,由内向外阅读比从右向左阅读要好,首先是圆括号括起来
的部分,*Parray意味着Parray是个指针,接下来观察右边可知,Parray是指向大小为10的数组指针,最后观察左
边可知,该数组中的元素是int类型。即Parray是一个指针,它指向一个int数组,数组中包含10个元素。
同理可知arrRef表示arrRef是一个引用,它的引用对象是一个包含10个元素的数组,该数组中的元素类型是int.
总之,遇到复合修饰符按照此种方法进行分析即可。