博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
指针类型强制转换
阅读量:6909 次
发布时间:2019-06-27

本文共 350 字,大约阅读时间需要 1 分钟。

问题为下:

#include<iostream.h>

void main(){
 int k=1;
 int *f=&k;
 *(float*)(f)=1;
 cout<<*f;
}//输出为啥不是1呢

这个时候,我们能够看到函数式里面有格式的转换。假设格式转换时存在除void格式外,还有两个及两个以上的格式的转换,则这时候的指针所指的variable所占的内存会产生变化,从而会使格式发生对应的变化

对于本题:

当你强行将int指针变为float指针后 去到的数据实际已经超出了int定义的内存空间范围

比如int 占领4个字节 float 占领8个字节 開始k=1 存放到了4个字节中
当你将指针转化为float后他就读出1的四个字节及其后面的额外四个字节 所以肯定不是1了,至于会是什么 应该是随机的 

转载地址:http://exgdl.baihongyu.com/

你可能感兴趣的文章
Samba再报安全漏洞
查看>>
sql语句函数
查看>>
.NET简谈自定义事务资源管理器
查看>>
Linux-HA开源软件Heartbeat(安装篇)
查看>>
cocos2d-x游戏例子01:是男人就坚持20秒(WIN32)
查看>>
svn 备份脚本(包含mysql数据库)
查看>>
进一步理解VC中的句柄
查看>>
日志聚合与关联分析技术实例视频演示
查看>>
javascript:求绝对值最小的数
查看>>
WCF分布式开发步步为赢(3)WCF服务元数据交换、配置及编程开发
查看>>
通过CLR同步SQL Server和Sharepoint List数据(三)
查看>>
SharePoint下用C#代码上传文档至文档库的子文件夹中
查看>>
统计文章各种分类总数
查看>>
CheckBoxList 拓展
查看>>
Eclipse 使用小结
查看>>
【MVC 4】6.SportsSore:导航
查看>>
ArcEngine的ToolbarControl解析
查看>>
Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录
查看>>
细说ES7 JavaScript Decorators
查看>>
C# Win32控制台线程计时器代码示例
查看>>