C 多維陣列

2021-09-19 11:37:59 字數 1764 閱讀 1252

參考自:primer c++ 第五版

嚴格的講,c++沒有多維陣列,通常所說的多維陣列其實是陣列的陣列。

當乙個陣列的元素依然是陣列時,通常使用兩個維度來定義它:乙個維度表示陣列本身大小,另乙個維度表示其元素(也就是陣列)的大小;

int a[3][4]表示大小為3的陣列,每個元素是含有4個整數的陣列;

int a[3][4] = ,//初始化第一行,};

花括號非必需

int a[3][4] = ;

如果僅想初始化每一行的第乙個元素:其它未列出的元素執行預設值初始化。

int a[3][4] = ,, };

顯式初始化第一行:int a[3][4] = ;

當程式使用多維陣列的名字時,也會自動將其轉換稱成指向陣列首元素的指標。

指向的是第乙個內層陣列的指標。

在上面程式的基礎上新增下面的程式對陣列進行訪問:

for (auto p = ia; p != ia + 3; p++) 

cout << endl;

//使用標準庫函式begin和end也可以

for (auto p =begin(ia); p != end(ia); p++)

1.constexptr變數

在乙個複雜系統中,很難分辨乙個初始值是不是常量表示式,

c++新標準規定,允許將變數宣告為constexpr型別以便由編譯器來驗證變數的值是否是乙個常量表示式

一般來說,如果你認定變數是乙個常量表示式,就把它宣告稱constexpr型別。

陣列定義時括號內要求為常量。

2.auto類說明符

用它讓編譯器代替我們去分析表示式所屬的型別,auto定義的變數必須有初始值:

3.size_t

是c標準庫中定義的;

通常將一些無符號的整數型別定義為size_t;

是sizeof關鍵字運算結果的型別

是為了使程式據跨平台使用,使**具有更好的可移植性;

在32位系統中佔4個位元組,在64位系統佔8個位元組。

在32位架構中被普遍定義為: typedef unsigned int size_t;

而在64位架構中被定義為:typedef unsigned long size_t;

而int在不同架構下都是4位元組,與size_t不同;且int為帶符號數,size_t為無符號數。

4.標準庫函式begin和end

一般將陣列作為它們的引數

begin函式返回ia首元素的指標,end函式返回指向ia微元素下一位置的指標。

int v = ;

int *beg = begin(v);/指向ia首元素的指標/

int *last = end(v);/指向陣列尾元素的下意味著的指標/

C 多維陣列

宣告乙個二維陣列,如下 型別 陣列名 宣告乙個三維陣列,如下 型別 陣列名 多維陣列最簡單的形式是二維陣列。乙個二維陣列,在本質上,是乙個一維陣列的列表。乙個二維陣列可以被認為是乙個帶有 x 行和 y 列的 下面是乙個二維陣列a,包含 3 行和 4 列 所以訪問二維陣列的元素 a 行下標,列下標 初...

C 多維陣列

上圖是乙個 二維陣列的數學表示法,該陣列有 3行 3列。第一行的值是 1,2,3 第二行是 4,5,6 第三行是 7,8,9 int twodim new int 3,3 twodim 0,0 1 twodim 0,1 2 twodim 0,2 3 twodim 1,0 4 twodim 1,1 5...

C 多維陣列

int ia ia是陣列 c 中並沒有多維陣列,它就是陣列的陣列。int ia 3 4 int ia 3 4 等價於 int ia 3 4 顯示初始化每行的首元素 int ia 3 4 顯示初始化第一行 int ix 3 4 通過ia i j 方式引用下標 constexpr size t rowc...