C++ 数组声明和初始化

显式初始化数组元素

如果指明了维度,那么初始值的总数量不应该超出指定的大小。如果维度比提供的初始值数量大,则用提供的初始值初始化靠前的元素,剩下的元素被初始化成默认值(参见 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
posted @ 2024-09-21 13:36  double64  阅读(86)  评论(0)    收藏  举报