const位置的影响
C++ Primer Plus 对 const 的使用作了较为详细的介绍,其中将 const 用于指针存在一些微妙的地方,尤其是以下两种用法:
int sloth = 3;
const int * ps = &sloth;
int * const finger = &sloth;
若将 const 放在 int * 之前,代表 *ps 为 const,不可修改,即 ps 为一个指向 const int 变量的指针,因此 ps 指向的数值不能被修改,但可以修改 ps 指针的指向,例如将其指向其他变量。
*ps = 20; //invalid
ps = &other_variable; //valid
另一种相反的定义方式为将 const 放在 int * 之后,表示指针的值 finger 本身为 const, 不可修改,即其指向无法改变,但却可以通过 *finger 修改指针指向的数值。
*finger = 20; //valid
finger = &other_variable; //invalid