const用于指针的用法总结

总的来说,const 的作用就是数据保护,防止数据无意间被修改。


用法一利用const 声明,让指针指向一个常量对象(常量对象的说法并不准确,但是很多教材都这么讲的,就先暂时这么用吧)

int age = 20;
const int * pt = &age;   //将pt声明为指向const int的指针,这意味着通过pt只有读取age的权限,不能通过pt去修改age的值
*pt += 1;   //Invalid, because pt points a const int

现在来看一个细节问题,上述声明的pt并不意味着他指向的对象是一个常量,而只是意味着 pt 没有修改该对象的权限,因为age是一个常规变量,完全可以在不通过pt操作age的情况下而改变age的值,所以说pt指向常量对象这种说法并不准确。


用法二:将指针本身声明为常量,这样可以防止改变指针指向的位置。

int age = 20;
int weight = 70;
int * const pt = &age; // 将pt本身声明为一个常量指针,指向age,以后就一直指向age,不能对pt赋值指向别的对象。
pt = &weight;  //Invalid, because pt is a const pointer

当 pt 本身是一个常量指针的时候,虽然指针的值不能改变,但是可以通过 pt 去修改它所指向对象的值。比如说:假设上述 int 对象的地址为 1000,则 pt 被初始化为1000,并且 pt  的值一直为1000,不能被修改。但是可以通过 pt 修改 age 的值。


用法三:将前两种用法综合起来使用,声明一个指向常量对象的常量指针

const int age = 20;
const int * cosnt pt = &age;
此时,age是const对象,age的值永远是20不能改变,而 pt 是一个 const 指针,只能永远指向 age ,不能指向其他对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值