这俩个类型之间为何能够进行强制转换??
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的高效率......那都是用血泪换来的啊