用指標變數可以指向一維陣列中的元素,也可以指向多維陣列中的元素,但在概念和使用上,多維陣列的指標比一維陣列的指標要複雜一些。可以認為二維陣列是陣列的陣列。
例:定義:int a[3][4]=;
則二維陣列a是由3個一維陣列所組成的,設二維陣列的首行首位址為2000,
表示形式
含義位址
a二維陣列名,指向一維陣列a0,即0行首位址
2000
a[0],*[a+0],*a
0行0列元素位址
2000
a[1]+2,*[a+1]+2,&a[1][2]
1行2列元素位址
2024
*(a[1]+2),*(*(a+1)+2),a[1][2]
1行2列元素的值
元素值為13
把二維陣列分解為一維陣列a[0],a[1],a[2]之後,設p為指向二維陣列的指標變數。可定義為:int(*p)[4]。
它表示p是乙個指標變數,它指向包含四個元素的指標陣列。
p+i則指向一維陣列a[i]。
二維陣列指標變數說明的一般形式為:型別說明符(*指標變數名)【長度】
例:用指標變數輸出二維陣列元素的值。
#include #includevoid
main()
;
inti,j;
int (*p)[4
]; p=a;
for(i=0;i<=2;i++)
}}
例:通過輸入指定行數和列數列印出二維陣列對應的元素值。
#include #includevoid
main()
;
inti,j;
int (*p)[4
]; p=a;
printf("i=
");scanf("%d
",&i);
while(i>2||i<0
)
printf("j=
");scanf("%d
",&j);
while(j>3||j<0
)
printf("%d
",*(*(a+i)+j));
}
多維陣列與指標
今天在寫遍歷二維陣列的時候,突然思考這個問題,原因在於作內層迴圈時,對指標和陣列理解不到位。雖然一直都會也寫遍歷二維陣列,但是原先從沒有想過這個問題。逃 標頭檔案 ifndef treble h define treble h includetypedef int int array 3 void ...
多維陣列與指標
用指標變數可以指向一維陣列中的元素,也可以指向多維陣列中的元素,但在概念和使用上,多維陣列的指標比一維陣列的指標要複雜一些。可以認為二維陣列是陣列的陣列。例 定義 int a 3 4 則二維陣列a是由3個一維陣列所組成的,設二維陣列的首行首位址為2000,表示形式 含義位址 a二維陣列名,指向一維陣...
指標與多維陣列小結
陣列 宣告 define size 10 int ch int get 10 int me size 表示方法ch 1 1 ch ch 0 ch 1 ch 1 get m n get m n int pz n pz m n get m n 復合標量 int 在宣告時同時使用陣列處理 include ...