二維陣列的指標變數

2021-10-22 10:30:53 字數 2252 閱讀 7096

如何理解二維陣列的指標變數:

例如: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 而利用二維陣列線性儲存的特性,可以將二維陣列當作一維指標方便的在函式之間傳遞 如 將乙個二維陣列賦值給乙個動態二維陣列,引數設定為一維指...