如何理解二維陣列的指標變數:
例如:a[3][4]是乙個二維陣列,a是二維陣列的陣列名,按照之前一維陣列的理解,它指的是整個陣列的首位址,首先想到的其應該是a[0][0]的位址,其實從邏輯上來講這是不對的,雖然數值確實一樣。因為二維陣列是元素為一維陣列的陣列,即a[3][4]指的是乙個陣列,其中陣列元素是a[0],a[1],a[2],a[3],其都是含有五個元素的一維陣列。
所以*a應該指向a[0],即a中存放的是a[0]的位址,那麼按照這種理解,*a的值為a[0]的值,而a[0]也是乙個指標變數,它指向的是第一行陣列的首位址,即a[0][0]的位址。
所以,*a指向的是a[0];*a[0]指向的是a[0][0];
a = 6487536
a[0] =6487536
*a = 6487536
*(a+0) = 6487536
a[0][0] =*a[0]= 1
a[0][0] =*(*a)= 1
a[0][3]=4
a[0][3]=4
a[0][3]=4
a[3]的位址為*((a+0)+3)=6487548
--------------------------------
process exited after 0.02294 seconds with return value 0
請按任意鍵繼續. . .
#includeint main()
,,};
printf("a = %d\n",a);
printf("a[0] =%d\n",a[0]);
printf("*a = %d\n",*a);
printf("*(a+0) = %d\n",*(a+0));
printf("a[0][0] =*a[0]= %d\n",*a[0]);
printf("a[0][0] =*(*a)= %d\n",*(*a));
printf("a[0][3]=%d\n",*(a[0]+3));
printf("a[0][3]=%d\n",*(*a+3));
printf("a[0][3]=%d\n",*(*(a+0)+3));
printf("a[3]的位址為*((a+0)+3)=%d\n",*(a+0)+3);
return 0;
}
輸出樣例二:
a=6487536,*a=6487536
a[0]=6487536,*(a+0)=6487536
a[1]=6487552,*(a+1)=6487552
&a[0]=6487536,&a[0][0]=6487536
a[1]=6487552,a+1=6487552
&a[1]=6487552,*(a+1)+0=6487552
a[2]=6487568,*(a+2)=6487568
&a[2]=6487568,a+2=6487568
a[1][2]=13,*(a[1]+2)=13
*(*(a+1)+2)=13
--------------------------------
process exited after 0.02533 seconds with return value 0
請按任意鍵繼續. . .
**如下:
#includeint main()
,,};
printf("a=%d,*a=%d\n",a,*a);
printf("a[0]=%d,*(a+0)=%d\n",a[0],*(a+0));
printf("a[1]=%d,*(a+1)=%d\n",a[1],*(a+1));
printf("&a[0]=%d,&a[0][0]=%d\n",&a[0],&a[0][0]);
printf("a[1]=%d,a+1=%d\n",a[1],a+1);
printf("&a[1]=%d,*(a+1)+0=%d\n",&a[1],*(a+1)+0);
printf("a[2]=%d,*(a+2)=%d\n",a[2],*(a+2));
printf("&a[2]=%d,a+2=%d\n",&a[2],a+2);
printf("a[1][2]=%d,*(a[1]+2)=%d\n",a[1][2],*(a[1]+2));
printf("*(*(a+1)+2)=%d",*(*(a+1)+2));
return 0;
}
二維陣列的指標及其指標變數
1 二維陣列的指標 有定義語句 int a 3 4 從二維陣列角度看,陣列名a 代表陣列的起始位址,是乙個以行為單位進行控制的行指標,由一維陣列構成的一維陣列就是二維陣列,a i 是行指標值,指向二維陣列的第i 行。a i 是列指標值,指向第i 行第0 列。a i 陣列元素a i 0 的值。用a 作...
二維陣列 二維陣列和指標
include using namespace std int main 如上面這段程式所示,通過取位址符 指標 p 獲得了變數 a 的位址,那麼解引用符 就可以從 p 中得到變數 a 的值。也就是說,p a和 p a是等價的。p 是變數 a 的位址,從 p 中就可以取出 a 的值。反之,能從 p ...
二維陣列與二維指標
1.二維陣列的儲存是線性的,可以通過一維指標的方式訪問。如一下 int map 5 5 int mapd map 0 0 則 map i j mapd i 5 j 而利用二維陣列線性儲存的特性,可以將二維陣列當作一維指標方便的在函式之間傳遞 如 將乙個二維陣列賦值給乙個動態二維陣列,引數設定為一維指...