精華區beta Programming 關於我們 聯絡資訊
※ 引述《previewslave@kkcity.com.tw ( )》之銘言: > ※ 引述《adrianshum.bbs@ptt.cc (Alien)》之銘言: > > btw, 我是覺得有分別 > > 比如用回常用的例子, str[0]='x'; > > 第一個寫法會 pass compilation, 只是在 runtime 可能會出問題 > > (Stroustrup 的 The C++ Programming Lang 說是 behaviour undefined) > > 後者則該不能通過 compilation > > Alien > Alien 說的好像比較正確。 > 我在想正確的說法是不是應該說成: > const char * str = "string"; > 才是正確的寫法,而 > char * str = "string"'; > 則是邏輯錯誤的寫法,是 C++ 高手應該避免的,因為容易造成行為未定義。 K&R 的 The C Programming Language有寫 char * str = "string"; 的特性是 str 之後可以改變內容。因此宣告後可藉由寫: str = "string2"; 來改變 str 的內容。 這個行為是有定義的。 但是注意不能寫 str[0]='x'; -- 信言不美,美言不信 善者不辯,辯者不善 知者不博,博者不知 -- 夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子 之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下 矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以 喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫 之令而自均始制有名名亦既有夫亦將知止知 218-163-129-105.dynamic.hinet.net