qq_29670983 2015-11-02 14:06 采纳率: 0%
浏览 1617

请教一个顶层CONST和底层CONST的问题

最近在看C++PRIMER这本书,对于书上所说的这个顶层和底层CONST的问题小弟不是很明白
所以特来这里想请教各位一下,
CONST INT CI=42;
CONST INT *P2=&CI;//允许改变P2的值,这是一个底层CONST
这句话不是很明白, 为什么能改变P2的值呢?P2不是一个指针常量吗?自身的值是不能
改变的呀,P2指向的对象CI的值也是不能改变的呀,所以等号前面是顶层CONST,后面
是底层CONST我 是这么理解的也不知道对不对,请高手指教 一下,先谢谢了。
CONST INT *CONST P3=P2//靠右的是顶层,靠左的是底层
请问下这句话也不是很明白,靠左的不是一个指针常量的声明吗?也就是指针本身 是一个
常量,也就是顶层呗?为什么它上面说是靠右的是顶层呢?

  • 写回答

1条回答 默认 最新

  • Niferry 2015-11-02 14:16
    关注

    和const的位置有关系,CONST INT CI=42;
    CONST INT *P2=&CI;
    意思就是对于指针P2来说,CI的值是无法改变的,但是P2本身的值,也就是它指向的那个地址,这是可以改变的。
    换句话说你不能通过*P2=20;这种语句改变CI的值。而且CI本身就是一个常量,就算CI不是CONST类型,通过P2一样不能改变。
    你如果这样定义CONST INT CONST *P2=&CI;那么P2指向的地址就永远是CI,这个地址也不能变了

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题