我在结构中仅声明了 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/