我在C中创建了两个具有相同数量变量的结构:3个整数和3个字符。 当我使用sizeof()运算符查看每个结构的实例的大小时,我得到两个不同的值。我想知道为什么会发生这种情况,这是我的代码:我尝试重新排列变量的结果相同。
typedef struct a
{
int x;
char a;
int y;
char b;
int z;
char c;
}s1;
typedef struct b
{
int x;
int y;
int z;
char a;
char b;
char c;
}s2;
int main()
{
printf("%d %d\r\n", sizeof (s1), sizeof (s2));
return 0;
}
答案 0 :(得分:1)
非常简单地说,处理器根据字大小对齐变量。您的情况下的整数以4个字节的边界对齐,因此当您交换字符和整数时,不会使用每个字符后的3个字节。 请参阅:https://www.geeksforgeeks.org/structure-member-alignment-padding-and-data-packing/