二維陣列的指標問題

2021-07-02 22:26:12 字數 542 閱讀 8247

最近遇到一道題,題目是這樣的:

int x[6][4],(*p)[4];p=x;   則*(p+2)指向**? 

a.x[0][1]

b.x[0][2]

c.x[1][0]

d.x[2][0]

先給出正確答案是d.

然後我想上機驗證一下,**如下:

int main()

;int (*p)[2],b;

p = x;

b = *(p+1);

return 0;

}不過b = *(p+1);這句報錯,後發帖求助,才搞明白。這裡的x是個二維陣列,x是乙個二級指標;x[0]代表一維陣列,是乙個一級指標。他們指向的位址是相同的,表示的意義卻不一樣。首先,要明確的是,無論p代表什麼,*(p+n)是恆等於p[n]的。所以,*(x+2)就是x[2],即對二級指標取內容變為一級指標。我在**中,將*(p+1)這個一級指標代表的p[1]這個int[2]型賦給乙個整型變數,肯定不對。只能說,*(p+1)指向的是x[1]這個陣列,當然從位址上看,也就是x[1][0]。因此,類似的原題答案應該選擇d.

二維陣列指標問題

編寫乙個程式,初始化乙個double型別的3 5二維陣列,使用乙個處理變長陣列的函式將其拷貝至另乙個二維陣列中。還要編寫乙個以變長陣列為形參的函式以顯示兩個陣列的內容。這兩個函式應該能處理任意n m陣列。c primer 10 6 程式設計練習 如下 void copy2d int row int ...

二維陣列 二維陣列和指標

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