gpt4 book ai didi

c++ - 结构的大小如何随不同的数据类型而变化

转载 作者:太空狗 更新时间:2023-10-29 20:04:20 25 4
gpt4 key购买 nike

我正在使用 Linux 32 位操作系统,和 GCC 编译器。

我尝试了三种不同类型的结构。在第一个结构中,我只定义了一个 char 变量。此结构的大小为 1 是正确的。

在第二个结构中我只定义了一个int 变量。这里结构的大小显示为 4,这也是正确的。

但在第三个结构中,当我定义一个 char 和一个 int 时,这意味着总大小应该是 5,但输出显示为 8。谁能解释一下如何分配结构?

typedef struct struct_size_tag
{
char c;
//int i;
}struct_size;

int main()
{
printf("Size of structure:%d\n",sizeof(struct_size));
return 0;
}

输出:结构的大小:1

typedef struct struct_size_tag
{
//char c;
int i;
}struct_size;

int main()
{
printf("Size of structure:%d\n",sizeof(struct_size));
return 0;
}

输出:结构大小:4

typedef struct struct_size_tag
{
char c;
int i;
}struct_size;

int main()
{
printf("Size of structure:%d\n",sizeof(struct_size));
return 0;
}

输出:

结构尺寸:8

最佳答案

大小差异是由于对齐造成的。编译器可以自由选择填充字节,这使得结构的总大小不一定是其各个元素的总和。

如果不需要结构的填充,因为它可能必须与某些硬件要求(或其他原因)交互,编译器通常支持打包结构,因此填充被禁用。

关于c++ - 结构的大小如何随不同的数据类型而变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20468725/

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