https://blog.csdn.net/qq_31094099/article/details/80790346
#pragma pack(push) //保存对齐状态 typedef struct strcChange //如果在未加字节对齐的情况下,那么A变量的后面需要自动填充三个字节, //那么直接将结构体取地址后复制到另一个数组中,实际上所需占用的内存大小是8个byte。 typedef struct strcChange2 STRU_CHANGE strChangeData1; STRU_CHANGE strChangeData2; STRU_CHANGE * pstrChangeData1; strChangeData1.B = 0x05040302; strChangeData2.B = 0x55443322; pucData = (unsigned char *)(&strChangeData2); printf("pucData[0] = 0x%x\n", pucData[0]); printf("pucData[1] = 0x%x\n", pucData[1]); printf("pucData[2] = 0x%x\n", pucData[2]); printf("pucData[3] = 0x%x\n", pucData[3]); printf("pucData[4] = 0x%x\n", pucData[4]); memcpy(C, &strChangeData1, sizeof(strChangeData1)); pstrChangeData1 = (STRU_CHANGE *)((char*)C); printf("STRU_CHANGE.A = 0x%x\n", pstrChangeData1->A); printf("STRU_CHANGE.B = 0x%08x\n", pstrChangeData1->B);
|