| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6696 人关注过本帖
标题:结构体的强制转换
只看楼主 加入收藏
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
以下是引用犬虫门心在2011-2-18 16:43:01的发言:

首先,你的写法是有语法错误的,应该为:
a = (struct A1)b;
要注意一个问题,C语言是支持结构体实例之间的直接赋值的;而其赋值本质是:内存块赋值!将b的内存内容(当然是按照struct A1的格式和长度为基础的)直接覆盖到a所占用内存空间中!
但此时要特别注意的是:
此时的C语言是不可能关心相关内存空间的“人文内容”的!要特别注意!
以后,再使用a的时候,对a的空间当然按a本身的类型进行解释,至于解释成什么,那就需要更深的计算机原理的知识了。但这至少有一个结论:如果你对计算机原理了解不深,那么请不要使用这种你无法掌控的方法!

你试过a=(struct A1)b;么?没实践过别臆测。
别动不动就长篇大论,误人子弟。

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2011-02-19 10:18
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
连 卧龙孔明 都看不下去了,

我就是真命天子,顺我者生,逆我者死!
2011-02-19 16:51
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:0 
以下是引用卧龙孔明在2011-2-19 10:18:08的发言:


你试过a=(struct A1)b;么?没实践过别臆测。
别动不动就长篇大论,误人子弟。
首先在这里我要感谢卧龙孔明先生对我的错误的指正!
经上机验证,a = (struct A1)b;是语法错误!
也就是说,C语言不支持对复杂类型struct、union等的类型转换!
再次感谢卧龙孔明的善意提醒。今后我一定就所发表的言论进行严格的验证。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-19 16:52
快速回复:结构体的强制转换
数据加载中...
 
   



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

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