我正在尝试编写一个更改const
变量值的程序。我知道一开始不应该这样做,而我只是想知道这是如何发生的。
我已经读过其他有关此问题,但我不是想知道如何做,而是为什么我的程序中没有发生这种情况。这是我写的代码:
int main()
{
const int a = 5;
int *pointer_a = const_cast<int*>(&a);
*pointer_a = 6;
// Address of a
std::cout << &a << std::endl;
// Prints 5 while memory says it is 6
std::cout << a << std::endl;
// Address that pointer points too
std::cout << pointer_a << std::endl;
// Prints 6
std::cout << *pointer_a << std::endl;
}
我在调试该程序时注意到,实际上a
的内存地址上的值已更新。确实会将a
的值从5
更改为6
。
IDE(Visual Studio)还将a
的值显示为6
,但在将其打印到控制台时,它会打印5
。当存储器上的当前值为6
时,为什么会发生这种情况?。
我正在尝试编写一个更改const变量值的程序。我知道一开始不应该这样做,而我只是想知道这是如何发生的。我已经读过...
修改最初声明为const
的值是未定义的行为。