gpt4 book ai didi

c - 为什么结构中只有 "char"类型成员没有填充?

转载 作者:行者123 更新时间:2023-11-30 18:16:51 24 4
gpt4 key购买 nike

我在结构中仅声明了 char 类型成员。

#include <stdio.h>

struct st
{
char c1;
char c2;
char c3;
char c4;
char c5;
};

int main() {
struct st s;
printf("%zu\n", sizeof(s));
return 0;
}

输出: [ Live Demo ]

5

那么,为什么结构中只有 char 类型成员没有填充?

最佳答案

填充是为了强制对齐要求。如果成员位于可被其大小整除的地址,则称该成员对齐(与其大小)。

<小时/>

在您的示例中不需要填充,因为 st 结构的所有成员都已与其大小对齐,即:st 每个成员的地址已经可以被它的大小整除。所有成员均为 char 类型,char 的大小为 1。如果成员的大小为 1,则该成员始终与其大小对齐,因为任何地址都可以被 1 整除。

关于c - 为什么结构中只有 "char"类型成员没有填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47324044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com