我正在学习c并尝试了解c如何处理内存空间。
当我阅读有关struct和union的主题时,我了解到struct在内存中做了某种内联以节省空间,并且union将元素放在相同的内存位置。
我尝试了如下代码:
typedef struct {
double a;
char b;
} number;
当我尝试查找该结构的大小时,它显示16个字节,如果我将a的类型更改为int,则大小将为8个字节。所以我有点困惑,因为添加char字节似乎会以不同方式增加struct的大小。
另一个关于工会的问题,我做了类似的事情:
typedef struct{
double a;
union{
int b;
double c;
long d;
};
} number;
然后我将所有字段设置为该类型的MAX。
在我的理解中,联合就像一个“共享内存”,但是此测试在某种程度上违反了该定义。
事实证明,整个结构的大小为16个字节,如果我将所有数字都设置为最大,那么应该将数字存储在哪里,多余的位应该在哪里存储。 我很困惑。