《基於 c++ primer p101>
內建陣列型別和其他內建型別一樣,其實現與硬體密切相關,體現了大多數計算機硬體本身具備的能力。因此相較於標準庫型別 string 和 vector,在靈活性上稍顯不足。
1.定義和初始化
陣列在編譯時維度應是已知的,即必須是乙個常量表示式。
unsigned cnt =42;
// 不是常量表示式
constexpr
unsigned sz =42;
// 常量表示式
int arr[10]
;// 正確
int*parr[sz]
;// 正確
string bad[cnt]
;// 錯誤
string strs[
get_size()
];// 若 get_size 是 constexpr 正確,否則錯誤
定義陣列時不允許使用 auto 關鍵字,也不存在引用的陣列。
(1)顯式初始化
const
unsigned sz =3;
int ia1[sz]=;
// 正確
int a2=
;// a2 的維度是 3
int a3[5]
=(0,
1,2}
;// a3 =
string a4[3]
=;// a4 =
int a5[2]
=;// 錯誤:初始值過多
int a6[3]
=;// a6[0] = 0, 其餘元素被值初始化為 0
(2)字元陣列
可以使用字串字面值初始化,注意考慮結尾的空字元。
char a1=
;// 列表初始化,無空字元
char a2=
;// 列表初始化,有空字元
char a3=
"c++"
;// 自動新增空字元
const
char a4[6]
="daniel"
;// 錯誤:沒有空間可以存放空字元
(3)不允許拷貝和賦值
int a=
;int a2[
]= a;
// 錯誤
a2 = a;
// 錯誤
(4)複雜的陣列宣告
先分析括號內,隨後從右向左一次繫結。
int
*ptrs[10]
;// 含有 10 個指標的陣列
int&refs[10]
=/*?*/
// 錯誤,不存在引用的陣列
int(
*parray)[10
]=&arr;
// parry 指向乙個含有 10 個整數的陣列
int(
&arrref)[10
]= arr;
// arrref 引用乙個含有 10 個整數的陣列
int*
(&arry)[10
]= ptrs;
// arry 是陣列的引用,該陣列含有 10 個指標
2.訪問陣列元素
可以使用下標運算子來訪問,索引從0開始。
使用陣列下標時,通常定義為 size_t 型別。
需要遍歷陣列的所有元素時,最好使用範圍for語句。
注意檢查下標的值,0 ≤ 下標 < 陣列大小。
陣列基本知識
陣列 一維陣列 二維陣列的初始化 1 按行連續賦值,即將所有資料寫在乙個大括號內,按照陣列元素排列順序對元素賦值。2 再為所有元素賦初值時,可以省略行下標,但是不可以省略列下標。3 按行分段賦值,可以分行給陣列元素賦值。字元陣列的初始化 1 逐個字元賦給陣列的各個元素。初始化利用大括號,每個字元用單...
陣列基本知識總結
我們在學習了c語言基礎知識後,應該對陣列有基本的了解與掌握,現在對陣列基本知識進行總結,如下所示 1.一維陣列 1 建立和初始化 建立 陣列是一類相同型別元素的集合 建立方式 type t arr name const n 初始化 在建立陣列的同時給陣列內容一些合理的初始值,元素個數按初始化內容決定...
java基本知識 5 陣列
陣列是相同資料型別的資料按順序組成的一種引用資料型別。說明 宣告一維陣列 陣列元素資料型別 陣列名 string countryarray 宣告二維陣列 陣列元素資料型別 陣列名 double wagesarray 宣告陣列僅僅給出了元素的資料型別和陣列名字,要使用陣列就必須為它分配記憶體空間,即例...