看板 C_and_CPP 關於我們 聯絡資訊
最近在看C++ primer, 看到pointers 與多維 arrays的關係 有段code 我拿來跑跑看, 有些不清楚的地方想請教 int ia[3][4] = { {1, 2, 3, 4}, {2, 4, 6, 8}, }; int (*ip)[4] = ia; //請問這邊=ia 意義是什麼? ip=&ia[1]; 1. cout<< *ip 印出address 2. cout<< ip 印出相同address (這個我懂) 3. cout<< ip[0] 正確印出2 4. cout<< ip[1~3] 垃圾值 5. cout<<(*ip)[0~3] 正確 測試後知道要用(*ip)[index]才能取值, 可是不懂為什麼.. 1為什麼會得到位址, 以及3,4兩點好像有衝突 請問這些code應該怎麼正確解讀呢, 感激不盡:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.69.128.66
FAITHY:請問這真的是compiler後的結果嗎 覺得怪怪的>< 08/18 21:39
loveme00835:樓上是要compiler什麼 ? 08/18 21:41
FAITHY:我可能沒搞懂 覺得1應該也是2吧 08/18 21:52
FAITHY:手邊沒有編譯器 但原來真的是這樣喔... 08/18 21:53
FAITHY:痾 錯了*ip[4]應該看成p[][4] 08/18 21:57
tomnelson:ia = address of ia = &ia[0][0] 08/19 18:14
truesword:cout<<ip[0]實測是印出位置喔, not value, VC++ 08/20 21:39
truesword:其實ip宣告看似pointer, 骨子裡卻是 int ** 08/20 21:40
truesword:這就是為什麼用ip必須取兩次才能得到值的原因 08/20 21:41
truesword:*ip實際上是指向一個sub array架構的add, i guess 08/20 21:41