首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这俩个类型之间为何能够进行强制转换?解决思路

2012-05-24 
这俩个类型之间为何能够进行强制转换??typedef struct _head{chartype//类型unsigned shortlen//数据包

这俩个类型之间为何能够进行强制转换??
typedef struct _head
{
chartype;//类型
unsigned shortlen;//数据包的长度(包括头的长度)
}hdr, *phdr;

//数据包中的数据结构
typedef struct _data 
{
charbuf[MAX_NUM_BUF];//数据
}DATABUF, *pDataBuf;

DATABUF m_data;//类中定义

phdr pHeader=(phdr)pClient->m_data.buf;//其中pClient是类CClient的指针
//为何这俩个类型之间可以转换??

[解决办法]
指针用强转 无论转成什么类型都可以的
具体有没有意义 要看指向内存的二进制布局了
(不考虑对齐)
你这里的情况 转成了phdr后,就可以直接读取到数据包前面的type和len了 也可以说依靠hdr的定义来帮你计算偏移量 
这偏移量自己也可以算

[解决办法]
指针和指针之间可以任意强转
后果自负而已
[解决办法]
转换的只是指针类型,这东西随便你乱转,只要你自己保证程序不会出错。要不然又怎么会有C的高效率......那都是用血泪换来的啊

热点排行