作者liu2007 (薯)
看板C_and_CPP
標題[問題] 請問陣列的小問題
時間Sun Jul 5 19:34:33 2009
我剛剛用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 囧 ▎ ●> ● ◤
▌ ﹍﹍ 0 ▊囧>
幹...
▲ ■┘ ■ ▎ ■ █◤ ▌ ㄏ▋ ︶■
〈﹀ ∥ ▁▁∥ ▎ ﹀〉◤
▋ ▊ 〈\
ψ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