int main()
; char (*p)[3];
p=a;
pf("%c %c\n",**p,**p+1);
pf("%c %c\n",**a,**a+1);
pf("%p %p %p %p\n",*p,*p+1,p,p+1);
pf("%p %p %p %p\n",*a,*a+1,a,a+1);
return 0;
}
如上所示,假設a 是二維陣列,p是乙個陣列指標;
1.對p來說,指向的是二維陣列的首元素(乙個一維陣列),對其++,可以使其指向二維陣列裡的下乙個元素(一維陣列),對其解引用(*p)就可以使其指向這個一維陣列的首元素(乙個字元),再++,可以使其指向這個一維陣列的另乙個元素(乙個字元),然後再解引用(**p),可以得到當前指向的元素的值(乙個具體的char值)。
2.對a來說,因為陣列名也就是陣列的首元素(乙個一維陣列)的位址,可以使其指向二維陣列裡的下乙個元素(一維陣列),對其解引用(*p)就可以使其指向這個一維陣列的首元素(乙個字元),跟p是一樣的。
最後的輸出結果為:
二維陣列 二維陣列和指標
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 而利用二維陣列線性儲存的特性,可以將二維陣列當作一維指標方便的在函式之間傳遞 如 將乙個二維陣列賦值給乙個動態二維陣列,引數設定為一維指...
二維指標和二維陣列
二維指標和二維陣列有三種形式 1,type ptr 2,type ptr或者type prt 3,type prt 三種形式意思相近,也有區別。首先三種形式都能表示二維的資料結構。1,type ptr 表示乙個指向指標的指標 但是在一開始宣告的時候 type ptr ptr到底指向幾個指標是不知道的...