?????й?C/C++????????????????????????????????????????Щ????????????????????????????

????1?????????????

????????ū????????????????????????????????????????????????????

?????????????struct????class??????????????????????????????????????????????????С????????struct/class????檔?????

struct align
{
 double b;
 char c;
 int a;
};

??????????????壬???? double b ??????棬????y?????double???????????????double?8?????????????c??a??????????8??????????

sizeof(align)

????????????3*8=24????????????????????????壺

struct align
{
 char c;
 int a;
 double b;
};

????c??????棬????1???????????a???????4???????????align?????8??????c:4??????a:4?????????b??double?????8??????????a+c?????????8??????????c+a+b??????????????? 4+4+8 = 16 ???????????????????????8??????

?????÷?????struct/class????????????С??????????С????????д????????????????????????

?????????????

?????е?class/struct??????????????????????????????????????洢??????????????????????鯔??????????÷????????????磺

struct product
{
 int cdrom_amount;
 double cdrom_unit_price;
 int phone_amount;
 double phone_unit_price;
};

??????????壬???鰴???????????????а???????????

????2????????????

?????????? #pragma pack(2) ??????

#pragma pack(2)
struct align
{
 char c;
 int  a;
 double b;
};
#pragma pack()

?????????????????????2???????????y?????????? 2+4+8 = 14 ??????????????????????????????????????????????????????ü????

#pragma pack()

???????????????????????????????????????????????????????????????Щ????????????????á?

?????????????????????????????Щ??????????????Щ?????????????????????????????????????????????????