看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《facos (鐵(鉄))》之銘言: : 補充說明: : 本來認為*(++point)的輸出值應該會是1,但實際上輸出是770. : 我不太懂為什麼? : 謝謝!! 因為ary在記憶體是00010203....09 (16進位) 一開始short指標指到0x0001 加1後(移動1個short=2 byte)指到0x0203 又因little endian 所以值是0x302=770 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.73.140
james732:我以為++point會移動sizeof(unsigned short)的距離? 11/04 16:58
littleshan:一開始指向的是 0x0100,++point 後指向 0x0302 11/04 17:00
loveflames:樓上是用哪個compiler跑的? 11/04 17:00
※ 編輯: loveflames 來自: 111.252.73.140 (11/04 17:02)
loveflames:修正一下好了 11/04 17:02
※ 編輯: loveflames 來自: 111.252.73.140 (11/04 17:05)
wfgh:為何不是指到0x0000這個位置? 00跟01應該是分開的兩個位置吧 11/04 17:12
james732:樓上在說什麼? 11/04 17:13
loveflames:art是char的陣列,元素是連續放的,就像字串一樣 11/04 17:13
wfgh:記憶體位置不是00 01 02 03....這樣嗎? 11/04 17:14
wfgh:不是指到00嗎?然後取值的話是把00 01以short來看的值 11/04 17:16
wfgh:我不太懂所以才想問一下,謝謝:) 11/04 17:16
james732:因為他做了++ 所以會移動到0203那裡 再以short來看 11/04 17:17
wfgh:但你說他一開始是指到0x0001,應該是說指到0x0000 11/04 17:18
wfgh:但取值的話是取0x0000 0x0001這兩個 11/04 17:18
wfgh:然後++會一次移動2byte,所以指到0x0002。取值則是0x0002 11/04 17:19
wfgh:跟0x0003這兩個以short來看 11/04 17:19
我前面沒表達清楚 是像下面這樣 point point+1 ↓ ↓ |00 01|02 03|.... 不過也不能說是指到0x0000 因為這樣變成有2個byte放00 ※ 編輯: loveflames 來自: 111.252.73.140 (11/04 18:43)