參考自: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...