511
技術社區[雲棲]
指針與字符串:(const)char *p2 = "lmj";定義的是一個字符串常量!符串常量,正因為是常量,所以它內部的字符是不允許修改的。
int main(){
char *p2 = "lmj";
*p2 = 'L';
printf("%s", p2);
return 0;
}
程序運行結果:段錯誤
看起來似乎是可行的,但這是錯誤代碼,錯在第2行。首先看第1行,指針變量p2指向的是一塊字符串常量,正因為是常量,所以它內部的字符是不允許修改的。
有人可能搞蒙了,這裏的第1行代碼char *p2 = "lmj";跟第一種方案中的第2行代碼char a[] = "lmj";不是一樣的麼?這是不一樣的。
char a[] = "lmj";定義的是一個字符串變量!
char *p2 = "lmj";定義的是一個字符串常量!嚴格來說,應該寫成const char *p2 = "lmj";,前麵加個常量修飾符
定義字符串的時候,應該考慮清楚:以後程序是否對字符串的內容進行修改,如果修改,定義為數組形式,若不修改,定義為指針形式,定義為一個字符串常量
最後更新:2017-04-03 16:48:54
上一篇:
返回局部變量的地址
下一篇:
指針的疑問
2013年3月TIOBE編程語言排行榜,Ruby超越Perl
《Netty 實戰》Netty In Action中文版 第2章——你的第一款Netty應用程序(二)
sendBroadcast和sendStickyBroadcast的區別
【OpenHW參賽手記】AXI-Stream接口介紹
揭秘一個城市如何“智慧交通”:高德地圖用大數據“治堵”,圈地逾百城
magento 1.4.1.0 -- 新版本小改進之訂單備注前台顯示
C# 轉義字符
asp.net中DropDownList添加“請選擇”提示
Oracle連接不上:ORA-12154:TNS無法解析指定的連接標識符
嵌入式工控機與傳統工控機的優勢比較