指针与字符串:(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无法解析指定的连接标识符
嵌入式工控机与传统工控机的优势比较