const的值在内存中已更改,但在输出中未更改

问题描述 投票:1回答:1

我正在尝试编写一个更改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变量值的程序。我知道一开始不应该这样做,而我只是想知道这是如何发生的。我已经读过...

c++ pointers const
1个回答
0
投票

修改最初声明为const的值是未定义的行为。

© www.soinside.com 2019 - 2024. All rights reserved.