const变量取地址-引起的疑惑

const变量取地址-引起的疑惑

一下代码输出什么?

 const int i = 1;  int *j =(int*) &i;  *j = 22;  cout << &i << " " << j << endl;  cout << i << " " << *j << endl;

const变量的地址取值后 发现结果竟然不一样 既然是同一个地址 为什么会是不同的结果,初步认为是数据存储区不一样的问题,然后进一步发现非也。

 既然最初设计为const 那么开发者肯定不想对这个变量修改 那么编译器可以优化为 立即数 替 换原来引用 的地方 从而提高效率,之后上面代码为

const int i = 1;  int *j =(int*) &i;  *j = 22;  cout << &i << " " << j << endl;  cout << 1 << " " << *j << endl;

volatile 告诉编译器该变量是随时可能发生变化的,每次使用它的时候必须从内存中读取,因而编译器生成的可执行码会重新从i的地址读取数据 

volatile  关键字可以  禁止编译器这种优化行为

但是对于new 这种const 值是无法确定的 所以编译器无法优化 ,如下例

   int * const  i = new int;  int *j = (int*)i;  *j = 22;  cout << i << " " << j << endl;  cout << *i << " " << *j;

限制的i的值 运行期才能决定 所以编译期 编译器无法优化,也就不存在那个”疑惑“了

转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/654545

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109087.html原文链接:https://javaforall.net

(0)
上一篇 2021年9月13日 下午8:00
下一篇 2021年9月13日 下午9:00


相关推荐

  • Java解析XML文件

    Java解析XML文件1.DOM方式解析XMLDom解析是将xml文件全部载入到内存,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件,与平台无关,java提供的一种基础的解析XML文件的API,理解较简单,但是由于整个文档都需要载入内存,不适用于文档较大时。2.SAX方式解析XML基于事件驱动,逐条解析,适用于只处理xml数据,不易编码,而且很难同时访问同一个文档中的多处不同数据3.JDOM方式解

    2022年5月4日
    39
  • 1277. 统计全为 1 的正方形子矩阵(动态规划)

    1277. 统计全为 1 的正方形子矩阵(动态规划)给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。示例 1:输入:matrix =[ [0,1,1,1], [1,1,1,1], [0,1,1,1]]输出:15解释: 边长为 1 的正方形有 10 个。边长为 2 的正方形有 4 个。边长为 3 的正方形有 1 个。正方形的总数 = 10 + 4 + 1 = 15.示例 2:输入:matrix = [ [1,0,1], [1,1,0],

    2022年8月9日
    4
  • 波束形成笔记整理

    波束形成笔记整理传统波束形成 固定波束形成 自适应波束形成依赖目标场景 环境噪声特性 声场模型假设核心思想 当波束从 0 方向入射时 两个麦克风采集到的信号之间无延时差 语音会叠加增强 采集到的噪音会因为延时差不同或相关性低而没有叠加作用 从其他方向入射的语音也存在延时差 不会被叠加 当波束 15 30 入射由于存在无法叠加作用 所以 0 比其他入射方向增益大 信噪比得到了提升 增加其他方向信号时 通过调节采集的信号延时差为零 来叠加 30 方向的信号 波束形成 时域方法 延

    2025年10月4日
    8
  • x390拆机图解_Thinkpadx390详细拆机图解

    x390拆机图解_Thinkpadx390详细拆机图解技术文档主体内容:可以认为是页面最想表达的内容总和。对于内容详情页来说,主体内容指从标题开始至正文内容结束,翻页区域也被视为主体内容,文章后的评论、分享、推荐等不视为主体内容。首屏:用户点击搜索结果后进入移动页面,不滑动屏幕即看到的所有内容,称为首屏。一屏:用户滑动屏幕至主体内容展现结束之前,在页面任意位置停留时看到的所有内容,称为一屏。移动端适配:为了使PC页面能够在移动端正常展现的手段,保证用…

    2022年6月27日
    100
  • cubieboard服务器系统,CubieBoard_搭建自己的系统.pdf

    cubieboard服务器系统,CubieBoard_搭建自己的系统.pdfCubieBoard_搭建自己的系统构建自己的CubieBoardDebianLinuxsoloforce汇编整理2013年10月10日1soloforce摘要本文在x86-64UbuntuLinux上为CubieBoard(包括A10单核和A20双核系统)构建一个基于ARMHF的DebianLinux,包括SPL、U-BOOT、内核(Kernel)、根系统…

    2022年7月22日
    10
  • 2026年OpenClaw(Clawdbot)+Skills云上及本地一键部署全流程步骤

    2026年OpenClaw(Clawdbot)+Skills云上及本地一键部署全流程步骤

    2026年3月13日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号