Re: [問題]指標輸出結果

看板C_and_CPP (C/C++)作者 (咕啾咕啾魔法陣)時間15年前 (2010/11/04 16:56), 編輯推噓2(2013)
留言15則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《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

11/04 16:58, , 1F
我以為++point會移動sizeof(unsigned short)的距離?
11/04 16:58, 1F

11/04 17:00, , 2F
一開始指向的是 0x0100,++point 後指向 0x0302
11/04 17:00, 2F

11/04 17:00, , 3F
樓上是用哪個compiler跑的?
11/04 17:00, 3F
※ 編輯: loveflames 來自: 111.252.73.140 (11/04 17:02)

11/04 17:02, , 4F
修正一下好了
11/04 17:02, 4F
※ 編輯: loveflames 來自: 111.252.73.140 (11/04 17:05)

11/04 17:12, , 5F
為何不是指到0x0000這個位置? 00跟01應該是分開的兩個位置吧
11/04 17:12, 5F

11/04 17:13, , 6F
樓上在說什麼?
11/04 17:13, 6F

11/04 17:13, , 7F
art是char的陣列,元素是連續放的,就像字串一樣
11/04 17:13, 7F

11/04 17:14, , 8F
記憶體位置不是00 01 02 03....這樣嗎?
11/04 17:14, 8F

11/04 17:16, , 9F
不是指到00嗎?然後取值的話是把00 01以short來看的值
11/04 17:16, 9F

11/04 17:16, , 10F
我不太懂所以才想問一下,謝謝:)
11/04 17:16, 10F

11/04 17:17, , 11F
因為他做了++ 所以會移動到0203那裡 再以short來看
11/04 17:17, 11F

11/04 17:18, , 12F
但你說他一開始是指到0x0001,應該是說指到0x0000
11/04 17:18, 12F

11/04 17:18, , 13F
但取值的話是取0x0000 0x0001這兩個
11/04 17:18, 13F

11/04 17:19, , 14F
然後++會一次移動2byte,所以指到0x0002。取值則是0x0002
11/04 17:19, 14F

11/04 17:19, , 15F
跟0x0003這兩個以short來看
11/04 17:19, 15F
我前面沒表達清楚 是像下面這樣 point point+1 ↓ ↓ |00 01|02 03|.... 不過也不能說是指到0x0000 因為這樣變成有2個byte放00 ※ 編輯: loveflames 來自: 111.252.73.140 (11/04 18:43)
文章代碼(AID): #1CqdL5L9 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
4
27
完整討論串 (本文為第 2 之 2 篇):
4
27
文章代碼(AID): #1CqdL5L9 (C_and_CPP)