看了钱老师的C语言课,他讲的比较全面。说明我以前只是一知半解。
//1.各成员偏移值:
member offset % min(Zp,sizeof(member type)) == 0
//2.结构体自身对齐:
结构体中最长字段:field
StructAlign = min(Zp,field)
Sizeof(结构体变量)%StructAlign == 0
//=========================================================
//编译器:Zp = 8
struct tagStuInfo
{
char szName[5]; //member offset:0 ->占用8个字节
float fHeight; //member offset:8 ->占用4个字节
short int wScore; //member offset:12 ->占用4个字节
int nAge; //member offset:16 ->占用4个字节
char cGender; //member offset:20 ->占用4个字节
double dblWeight; //member offset:24 ->占用8个字节
};//总长度:32字节
//=========================================================
//上述结构体,字段位置调整一下,如下:
//编译器Zp = 4
struct tagStuInfo
{
float fHeight; //0
double dblWeight; //4
shor int wScore; //12
char szName[5]; //14
int aAge; //20
char cGender; //24
};//总长度:28
//编译器Zp = 4
struct tagStuInfo
{
float fHeight; //0
double dblWeight; //4
shor int wScore; //12
char szName[5]; //14
char cGender; //19
int nAge; //20
};//总长度:24