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

第一种: const char*

const修饰的是*,这个*表示的是解引的意思,也就是指针指向的具体的值,这时它不能被修改,但可以指向别的变量(因为它修饰的不是指针,所以可以指向别的地址),举个例子吧:

const char* s="legend";
s[0]='s';//这样是错的!因为它不能被修改!
char* p="hero";
s=p;//可以这样,因为它可以指向别的变量

第二种: char* const

const 修饰的是s,是指针变量,表明它只能指向这个地址,不能指向别的变量,但是可以对值进行修改,例如:

char c[]="legend";
char* const s=c;
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;//错误!它不能再指向别的值!

 

posted @ 2020-04-17 22:04  youlj  阅读(1270)  评论(0编辑  收藏  举报