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了,有时间在做记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值