設有乙個二維陣列a,它有3行4列。它的定義為
int a[3][4]=,,};
a是乙個陣列名。a陣列包含3行,即3個元 素:a[0],a[1],a[2]。而每一元素又是乙個一維陣列, 它包含4個元素(即4個列元素),例如,a[0]所 代表的一維陣列又包含4個元素: a[0][0], a[0][1], a[0][2], a[0][3],可以認為二維陣列是 「陣列的陣列」,即陣列a是由3個一維陣列所組成的。
因此a代表的是首 行的起始位址(即第0行的起始位址,&a[0]),a+1代 表a[1]行的首位址,即&a[1]。
a[0],a[1],a[2]既然是一維陣列名,而c++又規定了 陣列名代表陣列首元素位址,因此a[0]代表一維數 組a[0]中0列元素的位址,即&a[0][0]。a[1]的值是 &a[1][0],a[2]的值是&a[2][0]。
*(a[0]+1) 就是 a[0][1]元素的值。而a[0]又是和*(a+0)無條件等價 的,因此也可以用*(*(a+0)+1)表示a[0][1]元素的值。 依此類推,*(a[i]+j)或*(*(a+i)+j)是a[i][j]的值。
1 #include 2using
namespace
std;34
intmain()5;
7int *p;
8for(p = a[0]; p < a[0] + 12; p++)
912 cout <13return0;
14 }
如果指標變數p先指向a[0](即p=&a[0]),則 p+1不是指向a[0][1],而是指向a[1],p的增值以一 維陣列的長度為單位
C 位址連續的多維陣列實現
位址連續的二維陣列在c語言數值計算中有重要意義,很多二維陣列的演算法是基於一維陣列寫的。另外,在序列化時或記憶體複製時,連續空間易於進行整塊記憶體的操作。子程式說明 1 array2d和freearray2d可實現位址連續的動態二維陣列的位址分配和釋放。2 作為對照,給出了位址不連續的二維陣列位址分...
多維陣列的位址轉換
多維陣列和廣義表是一種複雜的非線性結構,它們的邏輯特徵是 乙個資料元素可能有多個直接前驅和多個直接後繼。多維陣列 1 陣列 向量 常用資料型別 一維陣列 向量 是儲存於計算機的連續儲存空間中的多個具有統一型別的資料元素。同一陣列的不同元素通過不同的下標標識。a1,a2,an 2 二維陣列 二維陣列a...
迷糊的多維陣列的位址
為什麼要寫這個?因為這個東西有點混亂,至少我第一次接觸的時候是這樣的。或許以後還會,所以記下來需要的人一起看吧。直接上主題,我做事就是很直接,當然也會很囉嗦,下面你將會一併體驗到。int count 2 3 count 陣列count 0 0 的位址。count 1 陣列count 0 0 行數的偏...