在C++中我们来定义常量通常用const修饰符,并且const可以和指针一起来使用。
例如:const char* p="abcad"
char* const p="abcad"
const char* const p ="abcad"
看上去很是相似,在平常的使用过程中我们可能一不小心就会搞错,我思考了一下应该如何分辨。方法如下:
我们只需要记住指向常量的指针,它的值无法修改,但它指向的地址是可以改变的,即const char* p
const char* p="abcad";//这种形式为指向常量的指针
p[2]="o";//这样是错误的,值无法修改
p="eee";//这种操作就是正确的,赋予了p一个新的地址
对于常指针,其和指向常量的指针相反,它的值是可以修改的,但它指向的地址无法修改,即char* const p
char* const p="abcad";//常指针
p[2]="o";//可以改变p的值
p="eee";//不可以改变p所指向的地址
指向常量的常指针结合了上面两种的特点,无法修改值和所指向的地址,即const char* const p
const char* const p="abcad";//指向常量的常指针
p[2]="o";//达咩
p="eee";//达咩
指向常量的指针:既然无法改变,那就彻底分离吧。
常指针:既然无法分离,那就想法改变吧。
指向常量的常指针:既然无法分离,也无法改变,那就这样纠缠在一起吧。