我刚刚开始在C ++中学习“常量”这个概念,我遇到了一个问题:
int d=0;
const int* const pt = &d;
d = 3;
cout << *pt << endl;
此脚本提供输出“3”。 指针pt的定义应解释为“常量指针pt到常量int”(至少我相信如此)。但是,当我更改了d的值时,pt指向的int值也发生了变化,那怎么可能是“一个指向CONSTANT int的常量指针”???
非常感谢。
答案 0 :(得分:4)
指向const的指针并不意味着目标无法更改,这意味着您无法通过该指针修改目标。
由于指针指向的不是const,因此允许更改。
答案 1 :(得分:0)
没有指针pt
,你有
int d=0;
d=3;
哪个好。
如果声明为d const,则无法更改它:
const int d=0;
d=3; //ERROR
指针pt
不会改变d
的功能。
const
是一个承诺:我不会改变这一点,但其他可能会改变。