[問題] 請問陣列的小問題

看板C_and_CPP (C/C++)作者 (薯)時間16年前 (2009/07/05 19:34), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串1/1
我剛剛用C++的時候 發現 char array[5] = "12345"; printf("%s\n", array); 去跑的時候 它會產生overflow的error 但改為char array[5] = "1234";時 就可通過組譯 是因為陣列需要一個空間來儲存'\0'的緣故嗎? 我在C 下面跑的時候 char array[5] = "12345" 可以跑 只不過後面會跑出亂碼 但感覺亂碼不是很長 請問兩者記憶體內容的情形是怎樣呢? 又我宣告 array[5] 沒給初始值 printf("%c\n", array[3]); 出來的圖案是 '?' 請問是真的跑出ascii code 還是其他的原因 又我宣告char array[5]= ""; 程式做的動作是否把5個記憶體全部存入'\0'呢? 有請鄉民@.@ -- 肝不好 肝若好 人生是黑白的 考卷是空白的 、 ﹐ ● ●b ▎ ●> ● ▌ ﹍﹍ 囧> 幹... ▲ ■┘ ▎ ■ ▋ ︶■ 〈﹀ ∥ ▁▁∥ ▎ ﹀〉▊ 〈\ ψcockroach727 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.115.251

07/05 19:45, , 1F
C在讀字串的時候讀到'\0'才會停
07/05 19:45, 1F

07/05 19:46, , 2F
char array[5] = "12345" 會有亂碼是因為
07/05 19:46, 2F

07/05 19:46, , 3F
沒有'\0'結束符號 就會繼續往下讀 是什麼 不知道
07/05 19:46, 3F

07/05 19:46, , 4F
反正就一堆未知的值而變成亂碼...
07/05 19:46, 4F

07/05 23:46, , 5F
要n個 就宣告成n+1個
07/05 23:46, 5F
文章代碼(AID): #1AK8_II4 (C_and_CPP)
文章代碼(AID): #1AK8_II4 (C_and_CPP)