C++中的指针常量与指向常量的指针区别

众所周知,我们平时若要定义一个常量,使其不能修改,可以用 const 类型 标识名,这样的话这个变量的值就不能修改了。在这里插入图片描述
像上面这种对a赋值的做法就是错误的了。
同理,指针常量和指向常量的指针也就不难理解了。

指针常量

顾名思义,“指针常量”便是我们定义的指针是一个常量,其指向不可修改,也就只能在定义时对其进行初始化操作。如下:在这里插入图片描述
虽然上面指针a的指向不能变,但我们可以通过间址操作改变a指向的值(也就是m的值)在这里插入图片描述
另外,下面的这种初始化是错误的,因为虽然限定指针p的指向不可变,但对p进行间址操作(p)赋值也是可以的,但我们事先声明max为不可变的整型变量,所以我们对p赋值实质上是在改变max的值,上下不符合,所以会报错!
在这里插入图片描述

指向常量的指针

如果我们想定义一个指针,它指向一个不可变的常量,但是它的地址可变,我们就用到了“指向常量的指针”。在这里插入图片描述
我们可以“肆无忌惮”的对p赋值,但我们绝不能通过p去改变p指向的地址的值,因为p只可读,不可写。
此外,定义指向常量的指针时有两种方式: const 类型 指针 or 类型 const 指针

tips:关于指向常量的指针与指针常量,如果感觉难理解,可以通过看const的位置来记忆。例如“const int* p” const后面有*,也就是p只可读,“int const p”后面是p,即指针p只可读。
最后再来一句我自己的领悟(如果不对,还请指正):定义指针和引用时,如果指向的或引用的值为常量(const),那么对指针的间址操作和对引用 进行赋值绝对不行,也就是说至少是指向常量的指针or常引用。在这里插入图片描述
如果指向或引用的值为变量,那么,请随意~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值