问题描述
- 请教一个顶层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//靠右的是顶层,靠左的是底层
请问下这句话也不是很明白,靠左的不是一个指针常量的声明吗?也就是指针本身 是一个
常量,也就是顶层呗?为什么它上面说是靠右的是顶层呢?
解决方案
顶层const与底层const
C++中顶层const和底层const
顶层const与底层const
解决方案二:
和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,这个地址也不能变了
时间: 2024-07-31 21:04:24