非const指针可以修改const var int c ++吗?

Mar*_*_WM 0 c++ pointers const

这是我的测试代码:

#define print(A) cout << #A <<  " = " << A <<  endl;
int main()
{
    const int e = 2;
    int *p = (int *)&e;
    *p = 4;

    print(e);
    print(*p);
    print(&e);
    print(p);
}
Run Code Online (Sandbox Code Playgroud)

结果:

e = 2;
*p = 4;
&e = 0xbfc6b458;
p = 0xbfc6b458;
Run Code Online (Sandbox Code Playgroud)

由于"p"根据它们的相同地址指向"e",*p和"e"如何不同?这可能很危险,对吗?

eca*_*mur 8

弃去const是合法的; 使用如此获取的指针(或引用)来(尝试)修改const对象是非法的.

您的代码会导致未定义的行为; 它可以做任何事情,它没有任何意义.