显式初始化数组元素
如果指明了维度,那么初始值的总数量不应该超出指定的大小。如果维度比提供的初始值数量大,则用提供的初始值初始化靠前的元素,剩下的元素被初始化成默认值(参见 3.3.1节,第 88 页):
const unsigned s=3;
int ial[sz]={0,1,2}; //含有3个元素的数组,元素值分别是0,1,2
int a2[]={0,1,2}; //维度是3的数组
int a3[5]={0,1,2}; //等价于a3[]={0,1,2,0,0}
string a4[3]={"hi", "bye"}; //等价于 a4[〕={"hi","bye",""}
int a5[2]={0,1,2}; //错误:初始值过多
不允许拷贝和赋值
不能将数组的内容拷贝给其他数组作为其初始值,也不能用数组为其他数组赋值:
int a[]=(0,1,2}; //含有3个整数的数组
int a2[]= a; //错误:不允许使用一个数组初始化另一个数组
a2 = a; //错误:不能把一个数组直接赋值给另一个数组
理解复杂的数组声明
int *ptrs[10]; //ptrs是含有10个整型指针的数组
int &refs[10] = /* ?*/; //错误:不存在引用的数组
int (*Parray)[10] = &arr; // Parray指向一个含有10个整数的数组
int (&arrRef)[10] = arr; // arrRef引用一个含有10个整数的数组
int *(&arry)[10]=ptrs; //arry是数组的引用,该数组含有10 个指针
要想理解数组声明的含义,最好的办法是从数组的名字开始按照由内向外的顺序阅读。
《C++ Primer》 P103 标签:初始化,10,int,含有,初始值,C++,数组 From: https://www.cnblogs.com/huvjie/p/18423821