為什麼指向多維陣列的指標要宣告除第一維外的所有下標大小呢?
從編譯器的角度說是為了進行位址的運算
比如:你宣告了乙個int *p,當你用p+1運算的時候,編譯器知道要給你的新位址加4
你宣告了乙個char *p,當你用p+1運算的時候,編譯器知道要給你的新位址加1
同樣的道理,當你宣告了乙個指向多維陣列的指標,你同樣可能在程式中進行這種加p的運算,這個時候你沒有宣告下標的話,編譯器就不知道怎麼運算了,第一維不用宣告是因為它對運算沒有影響
ps:我覺得這不好,不夠符合人的直覺,從很多人不知道這個東西的用法就知道了,我覺得運算p的時候只加型別機器的大小就可以了,而正確的運算由程式設計師來把握,這樣顯得更乾淨,但標準已確定,不可能更改了
C語言指向多維陣列的指標
設有整型二維陣列a 3 4 如下 0 1 2 3 4 5 6 7 8 9 10 11 它的定義為 int a 3 4 設陣列a的首位址為1000,各下標變數的首位址及其值如圖所示。前面介紹過,c語言允許把乙個二維陣列分解為多個一維陣列來處理。因此陣列a可分解為三個一維陣列,即a 0 a 1 a 2 ...
指向指標的指標,指標的運算,指標與多維陣列的關係
指向指標的指標一顆 就有乙個位址 int p a int p1 p 變數的位址上的數值的位址 int a 10 int p a int p1 p 變數名而不是指標 巢狀的 列印得到的值是 p的值,列印得到的三個值都一樣 printf a p n a printf p p n p p是位址 p是取位址...
指標 多維陣列 陣列指標 指標陣列
之前對陣列的概念一直沒有理解透徹,只覺得陣列名就是個常量指標而已,用法和基本的指標差不多。所以當我嘗試用二級指標去訪問二維陣列時,就經常會出錯。下面就是剛開始寫的乙個錯誤的程式 include int main int parray null parray iarray printf array 0...