首页 > 试题广场 >

有变量struct{char ...

[单选题]
有变量
struct{
    char type;
    int num;
    char name[10];
}rec;
char是1字节,int是4字节,若按4字节对齐,那么sizeof(rec)等于()
  • 15
  • 16
  • 18
  • 20
char占一个字节,int占4个字节,由于字节对齐,前两个元素占8个字节,然后char数组占10个字节,8+10=18,根据字节对齐整数倍,所以为20个字节
发表于 2020-03-11 10:47:31 回复(0)
字节对齐
发表于 2019-09-07 07:57:12 回复(2)
要符合最大字节原则  char要用int字节数  char数组要是int 4个字节的倍数 4+4+12=20
发表于 2020-11-06 16:37:26 回复(0)
我的显示多选题
发表于 2022-01-04 10:29:39 回复(0)
这他妈,选了D然后提醒我说是多选题,就随便多选了一个然后………
发表于 2022-02-18 16:48:23 回复(0)
int不是两字节吗
发表于 2024-03-11 15:44:17 回复(0)

根据给定的结构体定义:

char 类型的 type 占用 1 字节。
int 类型的 num 需要按照对齐基准(4 字节)对齐,因此占用 4 字节。
char 数组的 name 需要按照对齐基准(1 字节)对齐,数组长度为 10,占用 10 字节。

结构体中的字段将按照最大字段大小的倍数进行对齐,也就是 4 字节。在结构体末尾可能会有额外的填充字节来满足对齐要求。

计算总的填充字节和结构体的大小:

1(type 的大小) + 3(对齐填充) + 4(num 的大小) + 10(name 数组的大小) + 2(name 数组的对齐填充) = 20 字节

所以,sizeof(rec) 的值为 20 字节。

发表于 2023-07-21 13:39:43 回复(0)
我的理解: 第0位 char占用; 第1~3位 空; 第4~7位 int占用; 第8~9位 空; 第10~19位 char[10]占用.
发表于 2023-03-25 17:10:10 回复(0)
<p>char 1-4</p><p>int 5-8</p><p>int[10] 9-18</p><p>对齐后为20</p>
发表于 2021-01-20 19:26:07 回复(0)
1+4+10=15,然后sizeof(rec)必须是最长一个成员的大小的整数倍,所以是20。(好像是这样)
发表于 2019-10-10 17:56:55 回复(0)