c++ - 指向 const 的 C++ 指针
问题描述
为什么1是错误而2是合法的。
这段代码取自C++ Primer 5th edition,关于这个没有太多细节[编辑:这不是重复的问题,所谓的原始问题很笼统]
const double pi = 3.14;
const double *cptr = π
*cptr = 42; // 1
double dval = 3.14;
cptr = &dval; // 2
解决方案
cptr
是一个指向常量双精度的指针。最初它指向常数双 pi。*cptr = 42;
将尝试更改 pi 的值。但是,由于 pi 是一个常数值,因此无法更改。
cptr = &dval;
更改 cptr 的值,即它现在包含 val 的地址。这是允许的,因为 cptr 不是常量指针。
推荐阅读
- amazon-web-services - S3 静态网站和 CloudFront 之间的加密
- c# - 启动线程时如何将参数传递给方法?
- javascript - Qualtrics:使用 Javascript 对循环/合并块内的问题进行评分
- java - 如何在检票口图像中使用默认值
- python - 如何加快/修复这个最短路径网格遍历?
- variables - 如何延迟 X 个刻度的海龟变量?
- sql - Postgresql INSERT ON CONFLICT 语法
- linux - 触发 UDev 规则
- assembly - Trying to understand contents of stack frame x86-64
- gcc - 为什么 ldd 在没有 LD_LIBRARY_PATH 的情况下无法在 /usr/local/lib64 中找到 libstdc++?