const char*; char const*; char* const三者的区别
在C++中,const有时可谓是一个“小人物”,但这个小人物又常常会让程序员犯错,下面给出一个经常会出现的错误:
有以下两个定义:
可能有人会觉得上面的两个定义是一样的,但却不是这样的,由于上面的定义有些复杂,因此Bjarne在他的《The C++ Programming Language》里面给出过一个助记的方法: 把一个声明从右向左读。
因此显然,定义(1)说的是p1是一个可变的指针,指向一个常字符,因此该定义可以不用初始化
定义(2)说的是p2是一个常指针,指向字符的,因此p2是不可修改的(顺便一提,该定义有问题,需要在定义的时候初始化)
从上面的分析中可以看到,const char*和char const*是一样的,但是两者合char* const 是不同的。