[語法] pointer to array請教

看板C_and_CPP作者 (Lucius)時間15年前 (2010/08/18 17:23), 編輯推噓1(109)
留言10則, 4人參與, 最新討論串1/4 (看更多)
最近在看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

08/18 21:39, , 1F
請問這真的是compiler後的結果嗎 覺得怪怪的><
08/18 21:39, 1F

08/18 21:41, , 2F
樓上是要compiler什麼 ?
08/18 21:41, 2F

08/18 21:52, , 3F
我可能沒搞懂 覺得1應該也是2吧
08/18 21:52, 3F

08/18 21:53, , 4F
手邊沒有編譯器 但原來真的是這樣喔...
08/18 21:53, 4F

08/18 21:57, , 5F
痾 錯了*ip[4]應該看成p[][4]
08/18 21:57, 5F

08/19 18:14, , 6F
ia = address of ia = &ia[0][0]
08/19 18:14, 6F

08/20 21:39, , 7F
cout<<ip[0]實測是印出位置喔, not value, VC++
08/20 21:39, 7F

08/20 21:40, , 8F
其實ip宣告看似pointer, 骨子裡卻是 int **
08/20 21:40, 8F

08/20 21:41, , 9F
這就是為什麼用ip必須取兩次才能得到值的原因
08/20 21:41, 9F

08/20 21:41, , 10F
*ip實際上是指向一個sub array架構的add, i guess
08/20 21:41, 10F
文章代碼(AID): #1CQwQ08f (C_and_CPP)
文章代碼(AID): #1CQwQ08f (C_and_CPP)