本帖最后由 vention 于 2017-2-23 11:48 编辑
我定义了一个结构体,总共应该是19个Byte,我再定义一个 20Byte 的 buf数组。
将类开辟空间赋值完后, 强制转换为 unsigned char 后,放进数组buf。
复完值后,我拷贝进去 ac_buf这个数值。 却发现在Frame_CRC 和 Frame_Cmd 之前多了一个Byte,请问是怎么回事。
buf 的0 ~17 个Byte 与 结构体的 前 18个Byte一样。 后面的数值也一样,就是拷贝过去的时候为何中间多了一个Byte?
对比如截图。
unsigned char ac_buf[20]={0};
typedef struct
{
unsigned char Frame_FCS;
union_Func_type Frame_Func;
unsigned short int Frame_Rvd;
unsigned long int Frame_CID[3];
unsigned char Frame_Cmd;
unsigned short int Frame_CRC;
}Send_Command_Frame_type; //1Byte + 1Byte + 2Byte + 3*4Byte + 1Byte + 2Byte = 19Byte
Send_Command_Frame_type *pSend_Command_Frame;
memcpy(ac_buf,pSend_Command_Frame,20);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
【1】结构体变量的首地址能够被其最宽基本类型成员的大小所整除
【2】结构体每个成员相对于结构体首地址的偏移量是成员大小的整数背
【3】结构体的总大小为结构体最宽基本类型成员大小的整数背
一周热门 更多>