C++ 试图用指针修改const变量触发的问题

问题遇到的现象和发生背景

测试强行用指针修改const变量底层发生的变化。

问题相关代码,请勿粘贴截图
#include<bits/stdc++.h>

using namespace std;


int main(){

    const int a = 2;
    cout<<&a<<endl;
    int *p = (int*)&a;
    *p = 3;
    cout<<"二者的地址"<<endl;
    cout<<&a<<endl<<p<<endl;
    cout<<"二者的值:"<<endl;
    cout<<a<<endl<<*p<<endl;
    return 0;
}
运行结果

img

问题

为什么取址相同的情况下,取值不同?

因为你定义为常量,所以编译器直接把用到a的地方替换成了常量值2,你可以汇编一下看看,以上是我猜的,我只是个java程序员😁

变量和常量的存储位置不同。常量区数据不允许改变,在通过指针赋值的时候被拒绝了。