*p不是不能改变值,*q不是不能改变指向的地址?

图片说明

字符串是只读的,不是指针是只读的。
p[1] = 'a'
就报错了

你理解错了。首先const char 和char const是一个意思,都是指常量字符只能在以开始赋值,即后面不能再改变和赋值。const char n = ‘a’;n=‘b’报错。

你可以这样理解p代表你家,*表示你家的门牌号。一开始你家是hello world,后来你写了一个p=z相当于你家的门牌号给了z所以输出的时候是输出z的内容。其他的都类似