陣列 (Array)
考慮以下情況:需要宣告存放 顆樹的高度,一種方式為宣告 個變數,這種方 C/C++
支援陣列,可以將同性質的變數,利用索引值進行存取。
宣告和初始化
宣告語法為 type var[size]
- type:資料的型態,可為
C/C++
提供的 基礎資料型態 或是 自定義的結構 。 - var:變數名稱
- size:陣列大小,必須是數字或常數(
C++
的const
),不可是變數,否則會在執行時發生錯誤。
在宣告時期,陣列內的元素是未被初始化的,在宣告的階段,可以利用 initializer_list
初始化, initializer_list
的格式為 {val1, val2, val3, ...}
。使用這種方式,一開始所有元素的值都會先設為 ,再將 initializer_list
的值依序放入陣列, initializer_list
的元素可以小於陣列長度,未被更動的元素會保持為 。 initializer_list
只可以用在宣告時,不可在宣告後使用:
1 2 3 4 5 6 7 |
|
存取
陣列存取須利用下標運算子 []
, []
需放索引值(Index),索引值為整數,從 開始,一個長度為 的陣列,它的索引值是從 到 ( )。如果索引值超過範圍,會發生錯誤或意想不到的事情,例如:記憶體區段錯誤 (Segmentation fault),修改到其他變數。
1 2 3 4 5 |
|
多維陣列
C/C++
支持多維陣列,即陣列裡有陣列,以二維陣列為例:
1 2 3 4 5 6 7 8 |
|
陣列常見問題:記憶體過大
C/C++
會遇到陣列開在 main
裡面記憶體會過大,導致程式無法情形,有兩種方法可以解決:
- 將陣列開在全域
- 在變數前加入
static
關鍵字
1 2 3 4 5 6 7 8 9 |
|