看板 C_and_CPP 關於我們 聯絡資訊
想問各位大神 例如我宣告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
wei115: 陣列和指標不一樣 只是編譯器會想讓這兩個看起來一樣 02/02 18:23
wei115: 陣列是連續的記憶體 取值是加上偏移 02/02 18:26
wei115: 指標的指標是有一個位置內存了位置 再由這個位置找到值 02/02 18:29
wei115: 可是在C裡面a[2][0]卻可以表示成*(*(a+2)+0) 這些差異編譯 02/02 18:31
wei115: 器會默默幫你搞定 02/02 18:31
Dracarys: *(a+2)的type是T[5],**(a+2)會work是因為array to ptr 02/02 20:28
Dracarys: decay成&T[2][0]然後你再dereference 02/02 20:28
Dracarys: 啊不是&T[2][0]是&a[2][0] 02/02 20:30
lllll12b56: 感謝各位 02/02 21:03