32位系统 struct A {char a; char b; char c} sizeof(A)?
时间: 2024-03-28 19:38:13 浏览: 17
在 32 位系统中,`struct A {char a; char b; char c}` 的大小为 3 字节。
这是因为在 32 位系统中,一个字节的对齐方式是按照 4 字节对齐的,也就是说,如果一个结构体的大小不是 4 的倍数,那么编译器会自动填充字节,以保证该结构体的成员变量能够按照 4 字节对齐。因此,`struct A {char a; char b; char c}` 的大小为 3 字节,因为它的成员变量总共占用 3 个字节。
相关问题
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`。
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`。