C语言里关于结构体sizeof的题

2025-04-02 19:14:37
推荐回答(2个)
回答1:

结构体大小遵循一下两条原则:
1) 数据对齐原则---内存按结构体成员的先后顺序排列,当排到该成员时,其前面已开辟的空间字节数必须是该成员类型所占字节数的整数倍,如果不够则补齐,依次向后类推。
2) 整体空间是占用空间最大的成员类型所占字节数的整数倍。
struct c{
int x; //4字节

float y; //4字节

}a[3];
a[3]位数组,sizeof(a)计算数组大小位8*3=24
假如结构体改为下面这样:
struct c{
double x; //8字节

char y; //1字节 总:8+1

int z; //4字节,前面字节和位9字节,不满足第一条所以为(9+3)+4=16

}总数16,满足第二条。

回答2:

当然是3倍sizeof(int)+ sizeof(float)。