C++的常量指针和指针常量之间的区别

最近刷题遇到好多类似的题目,因此差了书,做个笔记。

常量指针:让指针指向一个常量对象,这样可以防止使用该指针来修改指向的值;eg.int age =22; const int * pt =&age;该声明指出,pt指向一个const int(这里为22),因此不能使用pt来修饰这个值。话句话说,*pt的值为const不能被修改,但允许pt重新指向别的对象。

*pt+=1;cin>>*pt;都是违法的

指针常量:指针本身声明为常量,这样可以防止改变指针指向的位置。eg.int age = 22;int * const pt =&age;pt只能指向age,但允许使用pt来修改age的值。

结合一下:

int age =22;

const int * const pt = &pt;pt只能指向age,而pt不能用来修改age的值。简而言之pt和*pt都是const。

延伸一点:c++允许将const变量的地址赋给指向const的指针,但不允许将const的地址赋给常规指针。很好理解的,常量本身不允许改变,若赋给常规指针,使得变量的const状态很荒谬,因此C+=禁止这样做。如果非要这么做,可以使用强制类型转换来突破这种限制,不过这要参考运算符const_cast了,有时间在做记录。

猜你喜欢

转载自blog.csdn.net/qq_34885598/article/details/81393926