[C++, CPP] 進階資料型態
基本陣列(Basic Array)
- 陣列(Array):儲存多筆同型別的資料,每筆資料稱為元素(Element)
- 陣列所需的記憶體大小:依陣列型別和大小而定
- 陣列的元素儲存於連續的記憶體中
- 陣列是多個元素聚合(Aggreate)而成
- 宣告一個可以存放5個元素的陣列
int data[5];
- 陣列宣告:
- 基本宣告:
- 型態 名稱[大小];
- 宣告並以固定值初始化陣列:
- 型態 名稱[大小] = { 值1 };
- 宣告並以0初始化陣列:
- 型態 名稱[大小] = { };
- 型態 名稱[大小] = { 0 };
- 宣告並給每個元素各別的初始值
- 型態 名稱[大小] = { 值1, 值2, ...,值n};
- 型態 名稱[ ] = { 值1, 值2, ...,值n};
- 宣告陣列大小時,只能使用數字字面、const變數、列舉子(Enumerator)
- 陣列大小可以是任何整數常數運算式
-
int myArray[5]; const int maxArraySize = 5; int myArray[maxArraySize];
- 基本宣告:
- 使用:
- 名稱[索引];
- 陣列名稱對應到一個記憶體位址
- 利用索引(index)來參照(reference)要存取那個元素
- 陣列的大小由1開始記數,陣列的索引由0開始記數
- C++不會檢查索引值,若不小心使用超出陣列範圍的索引,會引發無法預料的結果
- 偏移量:元素間的距離
- 陣列初始化原則:
- 用來初始化的值叫做聚合初始值列(Aggreate Initalizer List)或初始值列(initalizer list)
- 沒有初始值列時,陣列元素的值為垃圾值
- 初始化時不可給超過陣列大小的初始值
- 若有給定完整的初始值列,則可以省略宣告陣列大小,C++會自動設為初始值列的長度
- 若省略宣告陣列大小,則初始值列至少要包含一個初始值
- 初始化時可給小於陣列大小的初始值,這些值會由第一個元素開始指派,沒指派到初始值的元素會用0來初始化
- 陣列與sizeof
- 取得整個陣列佔用byte數:
- sizeof 陣列名稱
- 取得一個陣列元素佔用的byte數:
- sizeof 陣列名稱[0]
- 取得一個陣列大小:
- 陣列名稱 / sizeof 陣列名稱[0]
- 取得整個陣列佔用byte數: