码迷,mamicode.com
首页 > 其他好文 > 详细

char * p = "abc"与const char *p = "abc"

时间:2015-12-27 23:24:39      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:

char * p = "abc"与const char *p = "abc"的区别是什么呢?

第一个语句会产生问题:

warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

此时我们只需要改成第二个用法警告就消失了,这是为什么呢?

我们来分别理解以下两个语句,首先要清楚的是char * p语句定义的p是一个指针变量,假设我们用的是第一个语句,那么我们所表达的意思是p的地址是abc,因此会出现问题。

而第二个语句的意思是我们定义了一个指针常量,然后改变了它的内容,这时候又有问题了,它不是常量吗?为什么改变它的内容不会报错?这里需要注意的是,这是一个指针常量,常量指的是它所指向的地址是固定的,而地址所存储的内容是可以改变的,或者说p存储的是地址,而地址里面的东西就不是常量了。这样以来语句二可以拆分为两个句子,即:

1 const char * p;
2 p = "abc";

我们先声明了一个指针常量,然后改变了它所指的地址中的内容,因此错误就不存在了。

char * p = "abc"与const char *p = "abc"

标签:

原文地址:http://www.cnblogs.com/zhuangshq/p/5080966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!