首先不管如何命名,它们所表达的含义是不变的:
int const *p; // *p 是常量,不能改变;但是p可以改变
int * const p; // p 是常量,不能改变;但是*p可以改变
下面是C++ primer P56页有提到的内容:
“指向常量的指针-pointer to const” (其实就是 指针常量)不能用于改变其所指对象的值(即*p不能改变)。-----对应上面的int const *p
“常量指针-const pointer”必须初始化,而且一旦初始化完成,则他的值(也就是存放在指针中的那个地址)就不能再改变了(即p不能再改变了)。把*放在const关键字之前用以说明指针是一个常量,即不变的是指针本身的值而非指向的那个值。------对应上面的int * const p
综上所属:
int const *p; // 指针常量
int * const p; // 常量指针
巧记:是指针常量还是常量指针,从右往左读!
const
关键字后面的是不可修改的。如:
int i = 10; int *const j = &i;
// j 在 const 后面,即指针 j 是不可以修改的,但是 *j 可以修改。