1樓:暮無井見鈴
講無型別的位址本身儲存什麼值沒有意義。
位址是什麼型別指標的值(要求合法且非 NULL ),「該位址」就儲存這個型別的物件。注意具體程式中能合法讀取某個位址的指標型別是較為有限的。
arr 是 int[10][10] 型別陣列物件,可以隱式轉換成 int(*)[10] 型別指標值。該指標值指向陣列首元素。
(取 &/sizeof/_Alignof 時不轉換,其他情況轉換)
陣列隱式轉換成的指標值,和陣列裡的元素值無關,只和陣列自身位址有關。
*arr( arr[0] 為其等價寫法) 是 arr 隱式轉換成的指標所指向的元素,亦是 arr 陣列的首元素。它是 int[10] 型別陣列,同樣可以隱式轉換成 int* 型別指標值。
轉換得到的指標值指向 arr[0][0] 這個元素。
arr[0] 與 arr[0][0] 這兩個物件始於同一位址(後者是前者的子物件),故其位址列印時(隱式轉換成 const void* )結果相同。
C 語言指標的指標和二維陣列的區別
已登出 C系的二維陣列是按行儲存的普通陣列,而不是在託管 指令碼語言中更普遍的引用陣列,二維陣列是乙個 以行為單元的陣列 而不是 以對陣列的引用為單元的陣列 也就是說,T x y 是 Array 當然C系不會這麼寫 而不是Array。所以typeof T x y 也就是說typeof a 是T y ...
c 如何自定義乙個返回二維陣列的函式而不是首位址?
如果你說的是內建陣列,那是不可以的。但是,如果你願意可以使用C 11標準模板庫裡面的array,封裝成了模板類,提供了拷貝建構函式,可以直接返回乙個array。 旺旺 C 語言標準裡面倒是真寫了函式不能返回陣列,在 版標準裡沒看到相關論述,在 版標準裡面看到了,函式不能返回陣列,但可以返回對陣列的引...
為什麼不能用 (a i)的形式表示二維陣列的元素,而b n 形式的卻可以?
欣梓 因為二維陣列名,也就a可以看作乙個二級指標,所以 a是指向行的指標 確切的說是指向第一行的指標,存放的是第一行第一列元素的位址 所以你要想輸出元素,得使用 a 的形式,第一行第二列元素就是a 1 嵌入式Linux include stdio.h intmain intarr2 4 4 int ...