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

看板C_and_CPP (C/C++)作者 (張航嘉)時間2年前 (2022/02/02 17:35), 編輯推噓3(306)
留言9則, 3人參與, 2年前最新討論串1/2 (看更多)
想問各位大神 例如我宣告a[5][5]這個二維陣列 為什麼a+2的值跟*(a+2)的值都是位置 還是同樣的位置? 我原本還以為*(a+2) = a[2][0] 結果自己試才知道要取a[2][0]要**(a+2) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.162.233 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1643794555.A.329.html

02/02 18:23, 2年前 , 1F
陣列和指標不一樣 只是編譯器會想讓這兩個看起來一樣
02/02 18:23, 1F

02/02 18:26, 2年前 , 2F
陣列是連續的記憶體 取值是加上偏移
02/02 18:26, 2F

02/02 18:29, 2年前 , 3F
指標的指標是有一個位置內存了位置 再由這個位置找到值
02/02 18:29, 3F

02/02 18:31, 2年前 , 4F
可是在C裡面a[2][0]卻可以表示成*(*(a+2)+0) 這些差異編譯
02/02 18:31, 4F

02/02 18:31, 2年前 , 5F
器會默默幫你搞定
02/02 18:31, 5F

02/02 20:28, 2年前 , 6F
*(a+2)的type是T[5],**(a+2)會work是因為array to ptr
02/02 20:28, 6F

02/02 20:28, 2年前 , 7F
decay成&T[2][0]然後你再dereference
02/02 20:28, 7F

02/02 20:30, 2年前 , 8F
啊不是&T[2][0]是&a[2][0]
02/02 20:30, 8F

02/02 21:03, 2年前 , 9F
感謝各位
02/02 21:03, 9F
文章代碼(AID): #1X-b1xCf (C_and_CPP)
文章代碼(AID): #1X-b1xCf (C_and_CPP)