c-同样地址,内容不一样的问题

问题描述

同样地址,内容不一样的问题
    const int x = 50;
    int* y = (int *)(&x);
    *y = 200;
    cout << "x: "<<x<<" address: "<<&x<<endl;
    cout << "*y: "<<*y<<" address: "<<y<<endl;
    cout<<endl;

以上是一段代码,输出的结果是:x: 50 * y=200 地址是一样的.

但是如果我把int改成float或者double那么值就都变成了200..
是不是因为原来为int型,一个地址存放了两个值,float型比较长,无法存放两个值
求解答~~

解决方案

对 const 类型变量进行间接的修改,就会导致相同地址的数值是不一样的,与变量的类型,int 或 float 无关。

解决方案二:

为变量分配地址是编译器的事情,不同的编译器,不同的优化选项,不同的平台都不一样。一些编译器为了紧凑而连续使用内存,一些编译器为了程序的高效,而对变量按照机器字长对齐,故意变量之间有间隙。
这个就很难说了。

解决方案三:

修改常量值导致未定义行为,表现可以是有时候看似管用,有时候不能用。

解决方案四:

你修改int为float显示是编译器的事情,不同的编译器分配地址的方式不一样,还有const修饰的变量不能被修改内容,所以你的const int x还是50

解决方案五:

x定义为const,那么编译器可能会把x优化成一个字面变量,因为你访问它地址修改值,而x本身可能还是原来的
修改const变量对编译器来说一种未定义行为,你不应该进行这样的操作,发生什么样的结果都是不可预见的

时间: 2024-08-02 21:57:56

c-同样地址,内容不一样的问题的相关文章

php fopen 函数不能获取远程地址内容

解决过程 首先排除了DNS的问题,因为除了这几个函数,其他一切工作正常.虽然是带域名的URL才有问题,但gethostbyname() 这个函数却可以得到正确返回. 然后想到的是php.ini 的配置问题--但发现allow_url_fopen 已经打开. 之后寻求Google帮忙,有人提及是SELINUX的问题.可我压根没有打开SELINUX.继续Google之,发现了StackOverflow的这篇  代码如下 复制代码 $file = fopen('http://www.google.co

Linux Socket学习--域和地址族

先来说说无名套接口吧:        套接口不一定需要地址,比如函数socketpair就生成了一对相互连接但是没有地址的套接口,这就是所谓的无名套接口.        有时候也会有这样的情况,在相互连接的两个太接口中有一个套接口不需要地址,例如当连接到一个远程的套接口的时候,虽然必须确定远程套接口的地址,但是发出调用的本地套接口却可以是匿名的.         有时候虽然需要一个地址进行通信,但是并不关心这个地址具体是什么,这个本地地址仅仅在通信过程中保持有效.如果给他分配一个固定的地址,浪费

PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)_php实例

方法一: 在php中,抓取https的网站,提示如下的错误内容: Warning: file_get_contents() [function.file-get-contents]: failed to open stream: Invalid argument in I:Webmyphpa.php on line 16 打开php.ini文件找到 ;extension=php_openssl.dll ,去掉双引号";" ,重启web服务器即可. apache服务器的话,可以同时启用m

遇到一个奇怪的问题,在GridView的OnRowCommand事件代码无法刷新页面中的控件内容

问题描述 页面中定义了一个GridView,其中设置了一个"修改"列,点击"修改"后可以触发OnRowCommand事件,但在该事件中,代码无法刷新页面中的TextBox的内容,跟踪看了,TextBox.Text的确赋值了,但页面显示无反应,如果在页面上增加个按钮来给TextBox赋值,则能够显示出来,不知道什么原因,有谁遇到过吗? 解决方案 解决方案二:后台代码如下:------------------------------IP地址:<asp:TextBo

Content-Location文件头定义方法(防止内部IP地址泄漏二法)_win服务器

当访问IIS网站上的静态HTML文件时,比如index.htm,IIS响应中会包含一个Content-Location文件头.如果IIS配置不当,Content-Location文件头中将包含服务器的IP地址内容,这样就导致了隐藏在NAT防火墙或者代理服务器后面的内部网IP地址信息的泄漏,给攻击者有漏可乘. 下面我就介绍2种解决办法,并不包含Content-Location'>文件头内容,所以接着要在IIS管理器中为之创建一个定制文件头,以返回特殊的Content-Location文件头内容.

[IT]当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

原文:What really happens when you navigate to a URL 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等. 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事. 1. 首先,你得在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址. DNS查找过程如下: 浏览器缓存 – 浏

个人网站安全 从数据库合理管理开始

数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常"看重"网站数据库. 数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常"看重"网站数据库. 对于个人网站来说,受到建站条件的制约,Access数据库成了广大个人网站站长的首选.然而,Access数据库本身存在很多安全隐患,攻击者一旦找到数据库文件的存储路径和文件

如何增强Access文件的安全性

对于个人网站来说,受到建站条件的制约,Access数据库成了广大个人网站站长的首选.然而,Access数据库本身存在很多安全隐患,攻击者一旦找到数据库文件的存储路径和文件名,后缀名为".mdb"的Access数据库文件就会被下载,网站中的许多重要信息会被一览无余,非常可怕.当然,大家采用了各种措施来加强Access数据库文件的安全,但真的有效吗? 存在漏洞的保护措施 流传最为广泛的一种Access数据库文件保护措施,是将Access数据库文件的后缀名由".mdb"改

保障网站安全运营 设置数据库安全三大措施

数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常"看重"网站数据库. 数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常"看重"网站数据库. 对于个人网站来说,受到建站条件的制约,Access数据库成了广大个人网站站长的首选.然而,Access数据库本身存在很多安全隐患,攻击者一旦找到数据库文件的存储路径和文件