首页 > 试题广场 >

以下两个结构体的字节数(sizeof的结果)分别为: str

[单选题]
以下两个结构体的字节数(sizeof的结果)分别为:
struct A        struct B
{                  {
   char a;         short a;
   int b;            int b;
   short c;        char c;
};                  };
  • 8和8
  • 8和12
  • 12和12
  • 12和8
在 C 语言中,结构体的大小取决于成员大小和内存对齐。内存对齐是为提高 CPU 访问内存速度,要求结构体每个成员存储在其类型大小整数倍地址上。 对于结构体 A: - char a 占 1 字节,后面填充 3 字节满足 int b 的 4 字节对齐要求。 - int b 占 4 字节。 - short c 占 2 字节,后面填充 2 字节满足结构体整体 4 字节对齐要求(最大成员对齐要求为 4 字节)。所以结构体 A 总大小为 12 字节,即 1+3(填充)+4+2+2(填充)。 对于结构体 B: - short a 占 2 字节,后面填充 2 字节满足 int b 的 4 字节对齐要求。 - int b 占 4 字节。 - char c 占 1 字节,后面填充 3 字节满足结构体整体 4 字节对齐要求。所以结构体 B 总大小为 12 字节,即 2+2(填充)+4+1+3(填充)。 结论:结构体 A 和结构体 B 大小都是 12 字节。
编辑于 2024-11-08 15:23:08 回复(1)