浅谈const char*,char* const,const char* const的区别

第一种: 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;//错误!它不能再指向别的值!
原文地址:https://www.cnblogs.com/YLJ666/p/12722783.html