伊谢尔伦2017-04-17 15:20:09
這樣做雖然不會報錯,但是試圖對p指向的字串123
進行修改將造成記憶體違規存取。因為"123"是字串常數,存放在唯讀儲存區。之所以要求使用const char*
是為了避免程式設計師錯誤的對123
進行修改。
PHPz2017-04-17 15:20:09
初學者試答
"123"是一個const char 類型的對象,const char * p 應該從右往左讀,意思是p 是一個指針,指向的對像是const char 類型,這不正好麼? 同理,你在後面加一句p = "456"; 也是對的,只要求p指向的對像是const char 即可。
ringa_lee2017-04-17 15:20:09
編譯加入-Wall
後會看見警告。
warning: ISO C++11 does not allow conversion from string literal to
'char *' [-Wwritable-strings]
char *p = "hello";
^