在 C++ 中,关键字 const 表示只读,也就是常量。当它和指针一起出现时,修饰位置不同含义也不同,很容易让人混淆。下面通过两个例子来区分"常量指针"和"指针常量"。
常量指针:指向常量的指针
当 const 写在类型前面时,指针指向的内容是只读的,不能通过该指针修改所指向的值,但指针本身可以重新指向别处。const int *aa 与 int const *aa 等价。
const int *aa = new int(5);//*aa的值为常量和int const*aa 等价
aa = new int(3);//ok
*aa = 7;//error
指针常量:指针本身是常量
当 const 写在 * 之后时,指针本身是只读的,一旦初始化就不能再指向其他地址,但可以通过它修改所指向的值。
int * const bb = new int(5);//bb的值为常量
bb = new int(3);//error
*bb = 7;//ok