标题:指针类型转换
只看楼主
duzhiming
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2012-2-13
结帖率:62.07%
已结贴  问题点数:5 回复次数:7 
指针类型转换
main()
{ float a=9.9;   
 float *pt=&a;
   int *p;   
 *(float *)p=*pt;
printf("%f\n",*p); )
将一个整形指针强制转换成浮点型 然后以浮点形式输出
为什么会输出错误呢?
将一个指向整型的指针 强转以后指向浮点型
搜索更多相关主题的帖子: 整形 
2013-01-23 12:40
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
得分:1 
int 类型和 float类型占据的内存空间不一样啊当你强行将int指针变为float指针后 去到的数据实际已经超出了int定义的内存空间范围例如int 占据4个字节 float 占据8个字节 开始k=1 存放到了4个字节中当你将指针转化为float后他就读出1的四个字节及其后面的额外四个字节 所以肯定不是1了,至于会是什么 应该是随机的

I have not failed completely
2013-01-23 12:55
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:1 
printf("%f\n",(float)(*(float*)p));

总有那身价贱的人给作业贴回复完整的代码
2013-01-23 12:57
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
回复 2楼 神龙赖了
32位机,float是4字节,double是8字节

总有那身价贱的人给作业贴回复完整的代码
2013-01-23 13:00
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:1 
类型转换应该用变量 用指针会出问题 除非你知道这个变量的存放细节

而这个存放细节属于C语言或者说计算机的实现方式 和C语言本身并没有太大关系 也不属于C的研究内容

结论就是 如果不想深入研究 就老老实实用书上教的东西做罢
2013-01-23 13:04
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
得分:0 
程序代码:
在用的时候的那个语句中是你强制转换的类型
但是那个变量还是原来的变量,并没有变化
如
int a=1,b=2;
float c;c=(float)a/b;

a,b 都是int型的,并不会因为经过了c=(float)a/b;这个后而变成float型的

I have not failed completely
2013-01-23 13:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:1 
教你写出这样转来转去代码的人,或者想出这样写的人,以及考试考这种代码的人,都可以去死了。

[ 本帖最后由 TonyDeng 于 2013-1-23 14:59 编辑 ]

授人以渔,不授人以鱼。
2013-01-23 14:57
lxsjzbd
Rank: 4
来 自:河北省
等 级:业余侠客
帖 子:97
专家分:258
注 册:2012-3-31
得分:1 
你只定义了一个INT型指针,就可以取内容了吗??????
还有float和int在内存里存储机制不一样的
2013-01-24 13:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-397366-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.158721 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved