[問題] 一個簡單的const問題

看板C_and_CPP (C/C++)作者 (XYX)時間15年前 (2011/07/05 13:56), 編輯推噓1(1011)
留言12則, 4人參與, 最新討論串1/4 (看更多)
MAC OS / xcode 4 compile code : int main(void) { const int var = 10; int *vptr = &var; *vptr = 20; printf("%d\n", var); printf("%d\n", *vptr); return 0; } Output: 10 20 想請問*vptr 到底改到哪裡的值? 明明不是有把var的地址assign給vptr嗎? 結果因為var是const 變數 因此 assign *vptr為20時 到底改到哪裡的值? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.181

07/05 14:01, , 1F
一肚子火的compiler在你後面,因為你不理他的抱怨
07/05 14:01, 1F

07/05 14:01, , 2F
不是要這樣寫喔@@? vptr=&var
07/05 14:01, 2F

07/05 14:04, , 3F
*vptr=&var 感覺好像是指標變數所指的內容是&var的位置
07/05 14:04, 3F

07/05 14:06, , 4F
樓上沒錯阿,但是1f應該是說有警告訊息
07/05 14:06, 4F

07/05 14:10, , 5F
compile有警告沒錯 但是仍不懂確切做了什麼事情會變這樣
07/05 14:10, 5F

07/05 14:11, , 6F
二樓 此為pointer在宣告時initial的寫法
07/05 14:11, 6F
※ 編輯: XYX16888 來自: 140.112.4.181 (07/05 14:11)

07/05 14:14, , 7F
試著寫了一下,警告是說:const int 和 int 是不一樣的
07/05 14:14, 7F

07/05 14:15, , 8F
type 這樣轉換有問題
07/05 14:15, 8F

07/05 14:16, , 9F
const int *vptr = &var;<-- 我猜是未定義行為,因為我印
07/05 14:16, 9F

07/05 14:16, , 10F
是20 20
07/05 14:16, 10F

07/05 14:22, , 11F
那應該是不同的compile所導致的 良葛格筆記也寫是 20 20
07/05 14:22, 11F

07/05 14:24, , 12F
...算了交給其他人回答
07/05 14:24, 12F
文章代碼(AID): #1E4gUDc5 (C_and_CPP)
文章代碼(AID): #1E4gUDc5 (C_and_CPP)