對於陣列,與指標變數總有千絲萬縷的關係。
int arr[3][4] = ; int base; // 以下三個位址值相同,但型別不同,尺寸不一 printf("%p",&arr); // 0012ff18 printf("%p",arr); // 0012ff18 printf("%p",arr[0]); // 0012ff18 printf("%p",&arr[0][0]); // 0012ff18 //取值需要不同級別的解引用 printf("%d",**arr); // 1 printf("%d",*arr[0]); // 1 printf("%d",arr[0][0]); // 1 printf("%p",base=(int)&arr[0][0]); // 0012ff18 // +1的偏移值是其型別尺寸的偏移 printf("%d",(int)(&arr+1)-base); // 48 sizeof(int)*4*3 printf("%d",(int)(arr+1)-base); // 16 sizeof(int)*4 printf("%d",(int)(arr[0]+1)-base); // 4 sizeof(int) printf("%d",(int)(&arr[0][0])-base);// 0
一級指標,可以用一維陣列名賦值。
而對於多維陣列,與多級指標就不存在等價關係了。
對於n維陣列,可以直接用一級指標去處理,因為n維陣列在記憶體中也是線性儲存的。
另外,n維陣列,可以理解為其元素是n-1陣列,這樣,n維陣列就可以用n-1維陣列指標來表示。也可以用指標陣列(其指標指向乙個n-1維陣列)來表示。所以從這個意義上說,這是一種降維的處理方式,對於符號「*」與「」,不是很嚴格地可以理解為有一定的等價性:
#include using namespace std;int main(); int i,j; cout<< "1 二維陣列下標遍歷"<
陣列指標也可以指向一維陣列,但寫法細節略有區別:
三維陣列的遍歷:
#include using namespace std;int main(); int* p = (int*)arr; int i,j,k; for(i = 0; i<2*3*4; i++) *p++ = i+1; p= arr[0][0]; // p = &arr[0][0][0]; for(i=0;i<2;i++) { for(j=0;j<3;j++) { for(k=0;k<4;k++) // 以下5種方式等價 //cout<< arr[i][j][k] <
-end-
陣列(Array),二維陣列,三維陣列
陣列 array 相同型別資料的集合就叫做陣列。一 定義陣列的方法 a type 變數名 new type 陣列中元素的個數 例如 int a new int 10 或者 int a new int 10 b type 變數名 new type 例如 int a new int 二 陣列的lengt...
C語言基礎 二維陣列,三維陣列
一 二維陣列 1.二維陣列的定義 資料型別 陣列名 行 列 2.二維陣列有幾行,就代表有幾個一維陣列.int a 2 3 a 0 對應的元素是1,2,3 二維陣列的元素也是通過下標來訪問的,行和列的下標都是從0開始的,a 0 0 表示陣列a的第乙個元素.3.二維陣列的元素的個數 行數 列數 4.二維...
二維數 三維陣列
二維陣列 2017 11 10 對比 1 概念 一維陣列 存貯一組相同型別資料 二維陣列 存貯著多個一維陣列 類推 三維陣列 存貯著多個二維陣列 2 宣告 一維陣列 陣列型別 陣列名 初始值 int arr01 int arr00 new int 5 二維陣列 陣列型別 陣列名 初值 陣列型別為一維...