看板 C_and_CPP 關於我們 聯絡資訊
我剛剛用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
world9918:C在讀字串的時候讀到'\0'才會停 07/05 19:45
world9918:char array[5] = "12345" 會有亂碼是因為 07/05 19:46
world9918:沒有'\0'結束符號 就會繼續往下讀 是什麼 不知道 07/05 19:46
world9918:反正就一堆未知的值而變成亂碼... 07/05 19:46
sunkill:要n個 就宣告成n+1個 07/05 23:46