???????????????????????????????????????????????????.?????????????????????????????????(??????????????С)????????????(?????????8???)?н?С?????????.?????????????????ù??????ж???????????????????????????.
????????(struct)??sizeof????????????????и?????????????????????????洢????????????????????漲???????????.

 

struct
{
char a;
short b;
char c;
}S1;
struct
{
char a;
char b;
short c;
}S2;

????????ó??????ó?sizeof(S1)=6 ?? sizeof(S2)=4
??????????????????????????????????????????д?????????????????????????????????????????????????????????????????????????????????????????
?????????????
????????????????????????????????
????1) ?????????????????????????????????С????????
????2) ???????????????????????????????offset???????????????????????????????С??????????????????????????????????????????internal adding????
????3) ????????С?????????????????С???????????????????????????????????????????????trailing padding????
????????????????????????????????int a[10]???????10?????α???????????
???????????????????????????????struct???????.
????????struct S1?? ????short?????????????????(2)?? ????洢λ????????????????offset???????С(short?2?????)???????????????????a?????????????????????????(3)????? ??????????С?short??С??????????????????c??????????????
????????struct S2?? ?????????????????????????????????洢???????????????
??????????????????????е?short?????int(?4?????)?? ????????????? ????ó?sizeof(S1)=12?? sizeof(S2)=8
????????????????????????ó???????????S1????a???????3????????c???????3?????????????12??????S2????a??b???洢???????????????????????????8??????
????????????Щ????????????????????????????? #pragma pack ??

 

#pragma pack(push) //??????
#pragma pack(1)// ????1??????
struct
{
char a;
short b;
char c;
}S1;
#pragma pack(pop) // ??????????