复杂的数组声明
int (*Parray)[10] = &arr; //Parray指向一个含有10个整数的数组
int (&arrRef)[10] = arr; //arrRef引用一个含有10个整数的数组
从内向外理解,Parray的含义:首先是圆括号括起来的部分,*Parray意味着Parray是个指针,接下来观察右边,可知道Parray是个指向大小为10的数组的指针,最后观察左边,指导数组中的元素是int类型;
int *(&arry)[10] = ptrs; //arry是数组的引用,该数组中含有10个指针
arry是个引用,观察右边可知arry引用的对象是一个大小为10的数组,最后观察左边指导,数组的元素类型是指向int的指针。
标准库函数begin和end
C++新标准引入了两个名为begin和end的函数,这两个函数与容器中的两个同名成员功能类似
int ia[] = {0,1,2,3,4,5,6,7,8,9};
int *begin = begin(ia); //指向ia首元素的指针
int *last = end(ia); //指向arr尾元素的下一位置的指针
多维数组
严格来说,C++语言中没有多维数组,通常所说的多维数组其实是数组的数组。
多维数组的初始化
int ia[3][4]={
{0,1,2,3},
{4,5,6,7},
{8,9,10,11}
};
//显式地初始化每行的首元素
int ia[3][4]={{0},{4},{8}};
//显式地初始化第一行,其他元素执行值初始化
int ix[3][4]={0,3,6,9};
指针和多维数组
int ia[3][4];
int (*p)[4]=ia; //p指向含有4个整数的数组
p=&ia[2]; //p指向ia的尾元素