char *与char[]的区别(c,c++不可以修改char *初始化值)

来源:互联网 发布:风云无双坐骑进阶数据 编辑:程序博客网 时间:2024/06/05 21:02

原因:
char *p="hello“;
*(p+2)='w';
这里的p是一个指向常量字符串的指针
他可以相当与:const char *p="hello"

根据定义:指向常量字符串的指针不能更改指针指向的内容,但是可以改变本身的值,既是执行*(p+2)='w'; (错误) p="bcvcbvv"(正确)

char pp[] = "hello";

这个相当与指针常量,就是本身是个常量<因为pp就是数组的一个引用,引用本身就是指针常量>
相当与 char const *pp="hello";  

根据定义:指针常量不能改变本声的值,但是可以改变指向的值

既是 *(pp+2)='W'(准确) pp="mnbmbmb"(错误)