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

C指针-const char* p到底是什么不可以改变

时间:2015-08-30 21:08:40      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

char a = ‘w‘;
char b = ‘q‘;

const char*  p = &a;
p = &b;
printf("%c",p[0]);

 如上一段代码,最终代码输出q。不是有const修饰嘛?为什么仍然可以改变哪?

指针存在的价值在于让我们修改。如一下代码:会报一个警告deprecated conversion from string constant to ‘char*‘ [-Wwrite-strings]

	char *msg;
	msg = "hello";

 因为指针是修改,char *背后的含义是:给我个字符串,我要修改它。所以应该给msg赋值一个地址,而不是一个常量字符串。如果确实给msg一个常量字符串,则会出现莫名错误,在Eclipse下自己退出,如下程序,是无运行的。

    char *msg;
    msg = "hello";
    msg = "good-bye";
    *msg = w;

好,接着说const的问题。const char* p = &a;这句话的意思是*p指向&a,且*p有只读权限,不能通过*p修改a的内容。当然仍然可以通过a直接修改内容。

const char*  p ;
p = &a;
a = k;
//p = &b;
//*p=‘k‘;
printf("%c",p[0]);

所以,const的问题是,值通过指针对内存有什么样的操作权限。char*p,可以做任何操作。const char *p 对这一块内容只能读。

 

C指针-const char* p到底是什么不可以改变

标签:

原文地址:http://www.cnblogs.com/z497688734/p/4771584.html

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