[問題] 陣列得到的sizeof大小

看板C_and_CPP作者 (Qoo)時間14年前 (2011/07/02 15:19), 編輯推噓2(2014)
留言16則, 6人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 陣列sizeof大小不變 餵入的資料(Input): int array[] = {1,2,3} array[3] = 4 int a = sizeof(array) 預期的正確結果(Expected Output): a = 16 錯誤結果(Wrong Output): a = 12 補充說明(Supplement): 一般一個int就是4byte 然而我不懂為合我array放入四個int 卻會被判斷為12byte -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.196.74

07/02 15:28, , 1F
第二行是錯誤寫法,不能這樣寫
07/02 15:28, 1F

07/02 15:32, , 2F
雖然我也覺得這樣寫怪怪的!!但complier也都沒問題
07/02 15:32, 2F

07/02 15:32, , 3F
而且也可以印出array[3]的值?這是為什麼?!
07/02 15:32, 3F

07/02 15:43, , 4F
...因為運氣好...可能你不是用vs吧
07/02 15:43, 4F

07/02 15:48, , 5F
一切只是運氣好 就像gets不是安全的函式是一樣的道理
07/02 15:48, 5F

07/02 15:50, , 6F
13誡之2
07/02 15:50, 6F

07/02 15:51, , 7F
剛無聊又跑去用Dev跟VS跑看也都屢試不爽,運氣真那麼好@@?
07/02 15:51, 7F

07/02 15:53, , 8F
其實這算運氣不好, 因為這種 code 會在交出去之後才當
07/02 15:53, 8F

07/02 15:53, , 9F
我犯13誡-2了@@"原諒我!!純粹好奇~
07/02 15:53, 9F

07/02 15:54, , 10F
不要用現今高階語言的想法來揣測 C 為什麼不會當
07/02 15:54, 10F

07/02 15:54, , 11F
因為這種寫法在 C 本來就"有機會"掛掉
07/02 15:54, 11F

07/02 16:07, , 12F
第一行是無中生有的建立陣列,第二行只是替換數值
07/02 16:07, 12F

07/02 16:07, , 13F
而程式都在虛擬記憶體裡面跑,所謂的印值就只是印出記憶體
07/02 16:07, 13F

07/02 16:07, , 14F
瞭解!!謝謝各位!!
07/02 16:07, 14F

07/02 16:08, , 15F
的內容。純粹是你誤以為可以印值就代表陣列有這麼大
07/02 16:08, 15F

07/02 17:02, , 16F
這只是編譯時的語法檢查不夠嚴謹,codeblocks就不過
07/02 17:02, 16F
文章代碼(AID): #1E3iPvGE (C_and_CPP)
文章代碼(AID): #1E3iPvGE (C_and_CPP)