第一种: const char*
const修饰的是char(因为它靠char更近),这时它不能被修改,但可以指向别的变量(因为它修饰的不是指针,所以可以指向别的地址),举个例子吧:
const char* s="legend";
s[0]='s';//这样是错的!因为它不能被修改!
char* p="hero";
s=p;//可以这样,因为它可以指向别的变量
第二种: char* const
const 修饰的是*,即指针,表明它只能指向这个地址,不能指向别的变量,但是可以对值进行修改,例如:
char* const s="legend";
s[0]='s';//这是可以的,它可以对值进行修改
char* p="hero";
s=p;//这是错误的!因为const修饰的是指针,地址是不能改变的!所以不能再指向别的变量啦!
第三种: const char* const
这种就综合了以上两种,既不能改变值,又不能指向别的变量,例:
const char* const s="legend";
s[0]='s';//错误!值不能被修改
char* p="hero";
s=p;//错误!它不能再指向别的值!