描述你的问题
pc是一个指向i的const指针,通过const_cast我们得到了一个普通的指针p。直接输出pc,p,以及&i,输出的都是003BF800,但是输出*pc,i却有1和32两种结果,那么请问在003BF800这个地址中存放的到底是整数1还是整数32,以及为什么会出现这种现象?-
贴上相关代码
#include <iostream>
using namespace std;
int main()
{const int i = 32; const int *pc = &i; int *p = const_cast<int*>(pc); *p = 1; cout << *pc << " " << *p <<" "<<i<< endl; cout << pc << " " << p << " " << &i << endl; return 0;
}
贴上报错信息
贴上相关截图
已经尝试过哪些方法仍然没解决(附上相关链接)
在
003BF800
中,保存的的确是整数1,由于p
指针已改变了其值。然而缘何i的值为32,可能因为i是个编译时可计算的常量表达式"constexpr
",在编译时已替换了相关内容。