看板 C_and_CPP 關於我們 聯絡資訊
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
littleshan:一肚子火的compiler在你後面,因為你不理他的抱怨 07/05 14:01
sss210146:不是要這樣寫喔@@? vptr=&var 07/05 14:01
sss210146:*vptr=&var 感覺好像是指標變數所指的內容是&var的位置 07/05 14:04
angleevil:樓上沒錯阿,但是1f應該是說有警告訊息 07/05 14:06
XYX16888:compile有警告沒錯 但是仍不懂確切做了什麼事情會變這樣 07/05 14:10
XYX16888:二樓 此為pointer在宣告時initial的寫法 07/05 14:11
※ 編輯: XYX16888 來自: 140.112.4.181 (07/05 14:11)
sss210146:試著寫了一下,警告是說:const int 和 int 是不一樣的 07/05 14:14
sss210146:type 這樣轉換有問題 07/05 14:15
angleevil:const int *vptr = &var;<-- 我猜是未定義行為,因為我印 07/05 14:16
angleevil:是20 20 07/05 14:16
XYX16888:那應該是不同的compile所導致的 良葛格筆記也寫是 20 20 07/05 14:22
angleevil:...算了交給其他人回答 07/05 14:24