作者zzss2003 (brotherD)
看板C_and_CPP
標題Re: [問題] 2D array的address
時間Tue Apr 24 10:45:51 2018
K大謝謝您的提醒,讓我知道B B[0]與B[0][0]的型別都不一樣
但我知道型別的差異後,我還是不知道我問的問題的答案(資質不好QQ)
但我自己有想到一個方法,提供給您參考看符不符合邏輯
假設B為1D array
B //address of first element in array
*B //value
B[0] //value
因為B為1D array,所以只要一個[](*)便能夠取值
假設B為2D array
B //address of first element in array
*B //因為只有一個*,所以還不能取到value
B[0] //因為只有一個[],所以還不能取到value
也就是說,以下:
printf("%p\n",B); // 400
printf("%p\n",**B); // 2
printf("%p\n",*B[0]);// 2
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.26.157
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1524537954.A.0CD.html
推 jerryh001: 正確來講B是 addr of array 不過就像其他人說的有歷史 04/24 10:59
→ jerryh001: 問題 所以是第一個元素地址也沒錯 04/24 10:59
推 AstralBrain: B不是address啊 他就是那個array 04/24 13:36
樓上兩位講的都沒錯啊,B = array = addr of array = add of first element in array
※ 編輯: zzss2003 (60.248.26.157), 04/24/2018 14:11:19
推 CoNsTaR: 正確來講ooo不過xxx也正確 04/25 00:16
→ CoNsTaR: 說兩個都正確很要命嗎… 04/25 00:16
→ jerryh001: 不是這樣說吧 一個像是原始定義 一個是最終結果 04/25 01:02
推 AstralBrain: 看你要不要分清楚 "是指標" 和 "可以轉型成指標" 04/25 22:29
→ AstralBrain: 這兩件事, 當然如果你覺得當成一樣的比較好理解也是 04/25 22:30
→ AstralBrain: 可以 04/25 22:30