b1c 2021-11-22 16:33 采纳率: 0%
浏览 41

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

问题

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

  • 写回答

2条回答 默认 最新

  • 菜鸟①个 2021-11-22 16:47
    关注

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

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月22日

悬赏问题

  • ¥15 我的住宅ip和vps的地址都是法国 可是在whoer里面一直查询我的位置是美国 这种ip不符合是什么问题导致的 怎么解决 手机电脑换电脑用whoer查询都是美国 用别的查询都是在法国
  • ¥15 关于游戏验证码滑块问题
  • ¥15 Unity 2022.3.34版本安卓打包apk失败,gradle配置问题,用的是mono2x
  • ¥15 R语言中安装bibliometrix 后运行biblioshiny出现问题
  • ¥20 关于#android#的问题:用开发助手发现找不到控件(autojs)
  • ¥15 dir815漏洞反弹shell失败
  • ¥15 支付宝小程序云函数登录获取user_id失败
  • ¥50 python for 循环速度慢
  • ¥15 CubeMX生成的代码用keil编译有报错
  • ¥15 Stata链式中介效应代码修改