您的位置:首页 > 其它

指针与字符串:(const)char *p2 = "lmj";定义的是一个字符串常量!符串常量,正因为是常量,所以它内部的字符是不允许修改的。

2013-08-09 11:31 459 查看
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";,前面加个常量修饰符

定义字符串的时候,应该考虑清楚:以后程序是否对字符串的内容进行修改,如果修改,定义为数组形式,若不修改,定义为指针形式,定义为一个字符串常量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐