#include <stdio.h>
class A
{
int a;
char b;
bool c;
};
class B
{
char a;
int b;
bool c;
};
class C
{
char a;
char b;
short c;
};
class D
{
char a;
char b;
bool c;
};
class E
{
int a;
E* p;
char b;
bool c;
};
int main(int argc, char** argv)
{
printf("A:%d\n", sizeof(A)); //8
printf("B:%d\n", sizeof(B)); //12
printf("C:%d\n", sizeof(C)); //4
printf("D:%d\n", sizeof(D)); //3
printf("E:%d\n", sizeof(E)); //24
return 1;
}
64位机上类型大小:
指针8字节
int 4字节
字节对齐:
结构体size: 最大属性字节数, 为结构体对齐字节数
属性对齐: 后面一个属性的对齐数, 会左右前一个属性是否需要留空白字节 (B结构12, b导致a留3白; E结构24, p导致a留4白)
结论: 大属性放前面声明