struct和union如何使用内存?

时间:2018-09-06 18:44:35

标签: c

我正在学习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个字节,如果我将所有数字都设置为最大,那么应该将数字存储在哪里,多余的位应该在哪里存储。 我很困惑。

0 个答案:

没有答案