Re: [語法] pointer to array請教
※ 引述《jehovah (Lucius)》之銘言:
: 最近在看C++ primer, 看到pointers 與多維 arrays的關係
: 有段code 我拿來跑跑看, 有些不清楚的地方想請教
: int ia[3][4] = {
: {1, 2, 3, 4},
: {2, 4, 6, 8},
: };
array是長這樣子的
1 2 3 4
2 4 6 8
X X X X
: int (*ip)[4] = ia; //請問這邊=ia 意義是什麼?
此處ia先decay成"pointer to a int[4](a int array type)"並assign給ip
ip成為a pointer to a int array named ia[0]
: ip=&ia[1];
指向ia[1]的位址(a pointer to a int array named ia[1])
: 1. cout<< *ip 印出address
ia[1](a int array)decay成pointer to ia[1][0],印出2的位址
: 2. cout<< ip 印出相同address (這個我懂)
ia[1]的位址等同於ia[1][0]的位址,也就是2的位址
: 3. cout<< ip[0] 正確印出2
這裡應該跟樓上一樣印出2的位址(等同於(*ip))
: 4. cout<< ip[1~3] 垃圾值
X,和超出array的位置(等同於(*ip + 1~3),也就是ia[2~5][0]的位置)
: 5. cout<<(*ip)[0~3] 正確
等同於ia[1][0~3],印出2 4 6 8
: 測試後知道要用(*ip)[index]才能取值, 可是不懂為什麼..
: 1為什麼會得到位址, 以及3,4兩點好像有衝突
: 請問這些code應該怎麼正確解讀呢, 感激不盡:)
一開始比較難瞭解array和pointer之間的關係
指來指去就不知道指到哪裡去了~
老實說因為我程式經驗少 所以理解也常常會出錯啊...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.168.54
推
08/18 18:03, , 1F
08/18 18:03, 1F
→
08/18 18:03, , 2F
08/18 18:03, 2F
對 我搞錯了 感謝糾正
※ 編輯: hilorrk 來自: 114.36.168.54 (08/18 18:27)
推
08/19 05:51, , 3F
08/19 05:51, 3F
→
08/19 05:51, , 4F
08/19 05:51, 4F
→
08/19 05:52, , 5F
08/19 05:52, 5F
→
08/19 05:52, , 6F
08/19 05:52, 6F
→
08/19 05:52, , 7F
08/19 05:52, 7F
推
08/19 07:11, , 8F
08/19 07:11, 8F
推
08/19 08:52, , 9F
08/19 08:52, 9F
討論串 (同標題文章)