陣列(一) 基本知識

2021-10-07 05:36:10 字數 1761 閱讀 8715

《基於 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 宣告陣列僅僅給出了元素的資料型別和陣列名字,要使用陣列就必須為它分配記憶體空間,即例...