结构体大小(sizeof)计算规则
1.以最大类型为字节对齐宽度
2.依次填补各个成员字节
3.结尾补齐
例题1
struct Stu
{
short s; //2
int a; //4
double d; //8
char c2; //1
};
int main(void)
{
Stu stu;
printf("%d, %d\n", sizeof(struct Stu), sizeof(stu));//24 24
}
结果:
计算方式:
最大类型为8
依次放入short, int等
空白(空余部分)自动补齐
3 * 8 = 24
例题2
struct Stu
{
short s; //2
int a; //4
double d; //8
char c2; //1
int a2; //4
int a3; //4
};
int main(void)
{
Stu stu;
printf("%d, %d\n", sizeof(struct Stu), sizeof(stu));//32 32
}
最大类型为8
依次放入short, int等
空白(空余部分)自动补齐
4 * 8 = 32