1、struct s1 { int a; char b; char c; }; sizeof(struct s1) = ? 2、struct s2 { char a; int b; char c; }; sizeof(struct s2) = ? 3、struct s3 { unsigned int a:8; unsigned int b:16; unsigned int c:8; }; sizeof(struct s3) = ?
时间: 2024-04-12 08:33:43 浏览: 181
1、sizeof(struct s1) = 8,因为int类型占用4个字节,char类型占用1个字节,结构体s1中包含一个int类型和两个char类型,所以总共占用8个字节。
2、sizeof(struct s2) = 12,因为char类型占用1个字节,int类型占用4个字节,结构体s2中包含一个char类型和一个int类型,所以总共占用12个字节。注意,结构体的内存对齐可能会导致结构体大小增加。
3、sizeof(struct s3) = 4,因为结构体s3中的成员使用了位字段(bit-field)来指定成员的位宽。unsigned int类型占用4个字节,成员a使用了8位(bit),成员b使用了16位(bit),成员c使用了8位(bit),所以总共占用4个字节。
相关问题
struct s1 { int a; char b; char c; }; sizeof(struct s1) = ?
根据内存对齐的原则,结构体中的成员变量会被调整到内存地址是其自身大小的倍数的位置。因此,结构体 `s1` 中的 `int a` 会被调整到 4 字节对齐,而 `char b` 和 `char c` 会被调整到 1 字节对齐。因此,`s1` 的大小为 4 + 1 + 1 = 6 字节。所以,`sizeof(struct s1) = 6`。
struct s2 { char a; int b; char c; }; sizeof(struct s2) = ?
根据内存对齐的原则,结构体中的成员变量会被调整到内存地址是其自身大小的倍数的位置。因此,结构体 `s2` 中的 `char a` 和 `char c` 会被调整到 1 字节对齐,而 `int b` 会被调整到 4 字节对齐。因此,`s2` 的大小为 1 + 4 + 1 = 6 字节。所以,`sizeof(struct s2) = 6`。
阅读全文