[問題] 二維陣列指標表示方法

作者: lllll12b56 (saiwagon)   2022-02-02 17:35:53
想問各位大神
例如我宣告a[5][5]這個二維陣列
為什麼a+2的值跟*(a+2)的值都是位置
還是同樣的位置?
我原本還以為*(a+2) = a[2][0]
結果自己試才知道要取a[2][0]要**(a+2)
作者: wei115 (ㄎㄎ)   2022-02-02 18:23:00
陣列和指標不一樣 只是編譯器會想讓這兩個看起來一樣陣列是連續的記憶體 取值是加上偏移指標的指標是有一個位置內存了位置 再由這個位置找到值可是在C裡面a[2][0]卻可以表示成*(*(a+2)+0) 這些差異編譯器會默默幫你搞定
作者: Dracarys (MayShowGunMore)   2022-02-02 20:28:00
*(a+2)的type是T[5],**(a+2)會work是因為array to ptrdecay成&T[2][0]然後你再dereference啊不是&T[2][0]是&a[2][0]
作者: lllll12b56 (saiwagon)   2022-02-02 21:03:00
感謝各位

Links booklink

Contact Us: admin [ a t ] ucptt.com