看板 C_and_CPP 關於我們 聯絡資訊
請問,宣告如下 char s1[3]; char s2[]={'a','b','c'}; char *s3="welcome"; char s4[]="welcome"; cout<<s1<<endl; cout<<s2<<endl; cout<<s3<<endl; cout<<s4<<endl; 輸出結果為 ?" abcwp$> welcome welcome 陣列名稱是常數指標,為什麼輸出不是記憶體位址 還有s2的輸出,不只輸出abc還多了其他的,可以解釋一下那四個真正輸出在記憶體的情形嗎 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.168.104
zlw:用printf 06/20 15:55
VictorTom:s2的空間只有3個char, cout遇到char*/char[]時預設會以 06/20 16:01
VictorTom:char string的方式輸出, 這相當於把s2當作字串印出來. 06/20 16:02
VictorTom:可是s2後面有沒有'\0'的字串結束字元, 所以就被超印了. 06/20 16:02
VictorTom:char s2={'a', 'b', 'c', '\0'}; 再cout一次試試試看. 06/20 16:03
VictorTom: [] <- 漏打; 其實問題只是cout遇到不同型態的預 06/20 16:04
VictorTom:設輸出模式罷了, 要強指定就去查一下cout的用法吧:) 06/20 16:04
sunkill:(void *) & 前幾篇有 06/21 11:30
dpqb10:謝謝你們 06/23 15:07