我使用的是 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;
}
Output:
结构尺寸:8
尺寸差异是由于对齐造成的。编译器可以自由选择填充字节,这使得结构的总大小不一定是其各个元素的总和。
如果结构的填充是不需要的,因为它可能必须与某些硬件要求(或其他原因)接口,编译器通常支持打包结构,因此填充被禁用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)