C的字符串指針一個奇怪的現象

假設char* a;

char* b;

很多書籍上都直接*a=*b;

如果char* a 是通過a="dddd";這中形式來初始化的話,那麼運行時候是會報錯的。總的原因就在於char* a="dd"這中形式初始化的話,dd是作爲一個常量字符串存在的。如果char a[]="dd";或者把一個字符串的數組開頭賦值給a指針,那麼是沒有問題的。

C書籍上有這麼一句話,char* a="dd";a是一個指針,其初值指向一個字符串常量,它可以被流改指向其他的地址,但是如果試圖修改字符串的內容,結果是沒有定義的。

這個和大家想象的不同吧呵呵。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章