作者lllll12b56 (張航嘉)
看板C_and_CPP
標題[問題] 二維陣列指標表示方法
時間Wed Feb 2 17:35:53 2022
想問各位大神
例如我宣告a[5][5]這個二維陣列
為什麼a+2的值跟*(a+2)的值都是位置
還是同樣的位置?
我原本還以為*(a+2) = a[2][0]
結果自己試才知道要取a[2][0]要**(a+2)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.162.233 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1643794555.A.329.html
1F:推 wei115: 陣列和指標不一樣 只是編譯器會想讓這兩個看起來一樣 02/02 18:23
2F:推 wei115: 陣列是連續的記憶體 取值是加上偏移 02/02 18:26
3F:→ wei115: 指標的指標是有一個位置內存了位置 再由這個位置找到值 02/02 18:29
4F:→ wei115: 可是在C裡面a[2][0]卻可以表示成*(*(a+2)+0) 這些差異編譯 02/02 18:31
5F:→ wei115: 器會默默幫你搞定 02/02 18:31
6F:推 Dracarys: *(a+2)的type是T[5],**(a+2)會work是因為array to ptr 02/02 20:28
7F:→ Dracarys: decay成&T[2][0]然後你再dereference 02/02 20:28
8F:→ Dracarys: 啊不是&T[2][0]是&a[2][0] 02/02 20:30
9F:→ lllll12b56: 感謝各位 02/02 21:03