带你分清常量指针和指针常量到底是谁能变

const和*混合使用

常量指针:const *a; 本质上a是一个指针,常量表示a的指向是一个常量,所以a的指向不能改变

指针常量:* const a;本质上a是一个常量,表示是一个指针类型的常量

简单的记法就是从左向右读,const后面跟谁谁不变但是C++课本上定义的方法是从右往左,具体还需要会使用

    int aa = 10, bb = 20;
    int c = 30, d = 40;

    const int *a = &aa;     //a是常量指针,所以所以此刻a指向的内容不能改变,但是可以改变a的值
    int *const b = &bb;     //b是指针常量,此刻b的值不能改变,但是指向的内容可以改变
    
    a = &c;        //此时a的地址变为了c,此刻a就是c的指针,而aa的值不变
    //*a = *&d;   错误,因为是常量指针,所以指向不能改变
    *b = d;      //此刻*b的指向是d,但是b的地址没有变,所以此刻就把d的值付给了b,此时b和bb的值都变为了d;此时由符号*得到b所指的对象,然后把d赋值给所指的对象
    //b = &c;     错误,因为是指针常量,所以b的值不能改变

上面代码中,a是一个常量指针,const紧挨着*,所以*a不能改变,而a的值可以改变,而a的值改变后,就和原来的指向aa没有关系了。

b是一个常量指针,const紧挨着b,所以b的值不能改变,而*b可以改变,但是由于地址不变,所以*b指向改变后,b任仍然和bb的地址一样。

顶层const:类似于常量指针(*const),表示指针本身是一个常量

底层const:类似于指针常量(const *),表示所指的对象是一个常量

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大学生毕设

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值