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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • css分页效果_asp中数字分页样式

    css分页效果_asp中数字分页样式CSS分页实例简单分页如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航。ul.pagination{display:inline-block;padding:0;marg

    2022年8月6日
    4
  • 个性化推荐算法总结[通俗易懂]

    个性化推荐算法总结[通俗易懂]读书笔记|《推荐系统实践》-个性化推荐系统总结对于推荐系统,本文总结内容,如下图所示:一、什么是推荐系统1.为什么需要推荐系统为了解决互联网时代下的信息超载问题。2.搜索引擎与推荐系统分类目录,是将著名网站分门别类,从而方便用户根据类别查找公司。 搜索引擎,用户通过输入关键字,查找自己需要的信息。 推荐系统,和搜索引擎一样,是一种帮助用户快速发展有用信…

    2022年5月2日
    37
  • 超级P2P搜索引擎

    超级P2P搜索引擎
    搜索Google大家都用过吧?我们正是利用它强劲的搜索功能来突破封锁下载,Google搜索和限制下载有什么关系,没可能实现吧?不要不相信哦,往下看哦!

    http://www.google.com/intl/zh-CN/
    http://www.3721.com/
    http://www.baidu.com/

      首先打开Google,在关键词输入框中输入“indexof/“inurl:lib(双引号为英文状态下),选择“搜索简体中文

    2022年7月18日
    37
  • quartz定时任务使用_netty定时调度

    quartz定时任务使用_netty定时调度定时任务调度工具之Quartz(一)一、Quartz介绍OpenSymphony提供的强大的开源任务调度框架;官网:http://www.quartz-scheduler.org/纯Java实

    2022年8月6日
    2
  • C语言课程设计——学生成绩管理系统(详细报告)

    C语言课程设计——学生成绩管理系统(详细报告)欢迎来到「发奋的小魏」的博客。我是小魏,一名普通的在校大学生。在学习之余,用博客来记录我学习过程中的点点滴滴,也希望我的博客能够更给同样热爱学习热爱技术的你们带来收获!希望大家多多关照,我们一起成长一起进步。也希望大家多多支持我鸭,喜欢我就给我一个关注吧!目录1.用户分析 21.1用户需求 21.2用户目的 21.3验收 22.概要设计 22.1功能设计 22.2数据结构设计 32.3功能运行流程图 33.系统功能设计 43.1菜单选择模块的流程图 43.2添加模块的流程图 43

    2022年6月20日
    54
  • JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)「建议收藏」

    JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)「建议收藏」JavaWeb——ServletTomcat工作机制动画演示(点击动图可全屏观看)什么是ServletServlet(ServerApplet),全称JavaServlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web…

    2022年4月27日
    42

发表回复

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

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