qq_29670983
qq_29670983
采纳率43.1%
2015-11-02 14:06 阅读 1.6k

请教一个顶层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 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,这个地址也不能变了

    点赞 评论 复制链接分享

相关推荐