Code
#include <iostream>
using namespace std;
int main() {
const int N = 22;
int * pN = const_cast<int*>(&N);
*pN = 33;
cout << N << '\t' << &N << endl;
cout << *pN << '\t' << pN << endl;
}
Output
22 0x22ff74
33 0x22ff74
为什么同一个地址有两个不同的值?
为什么同一个地址有两个不同的数据?
没有。编译器可以优化任何提及 const 的内容,就好像您已将其编译时值写入其中一样。
请注意,如果您执行了诸如写入为 const 保留的内存等令人讨厌的技巧,编译器还可以生成在运行时擦除硬盘的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)