struct stu { char name[19]; int sex; }a; sizeof(a);为什么是24?而不是23?

我把char name[19]长度改成20,sizeof(a);的结果也是24!
2025-03-07 10:23:57
推荐回答(2个)
回答1:

字节对齐,结构体中,成员的起始地址必需是该成员自身大小的整数倍。
上例中,int的大小为4,所以他的其实位置因该为4的整数倍,即使前面有17,18,19个字符,它也要从20 开始

回答2:

数据对齐的关系。这里是32位(4字节对齐)