顯式初始化陣列元素
如果指明瞭維度,那麼初始值的總數量不應該超出指定的大小。如果維度比提供的初始值數量大,則用提供的初始值初始化靠前的元素,剩下的元素被初始化成預設值(參見 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