|
本帖最后由 moyanming2013 于 2017-3-13 11:52 编辑
姑且假设你的sSendDataBuf是一个uint8或者uint32之类的数组,那么我想你的程序想发送一个数据序列,该序列保存在sSendDataBuf中,而该sSendDataBuf数组的第一个数据可能代表了长度(或MsgHeadDef_t的个数),后面则是规则的MsgHeadDef_t数据。
sSendDataBuf+1指向了该数组的第1个位置,根据上面的推论,第一个位置也就是MsgHeadDef_t数据的地址,把该地址通过强制类型转换(因为sSendDataBuf是个uint8或者uint32指针需要进行强制类型转换)赋值给ptempMsgHead自然也就是合理的(该程序可能在填充一个sSendDataBuf序列)。
一般情况下如果想发送一个数据结构的序列可以这样(而不是直接都塞在一个uint8或uint32的常规数组中):
- struct MsgHeadDef_t{
- uint8 dataX;
- };
- struct sSendDataBuf{
- uint32 dataLen;
- MsgHeadDef_t* pData;
- };
复制代码
或者你的sSendDataBuf本身就是MsgHeadDef_t类型的数组:
MsgHeadDef_t sSendDataBuf[9];
sSendDataBuf+1就是取第1个MsgHeadDef_t数据。
|
|