追风~JT 发表于 2019-9-20 18:08:19

为什么得到的结果是40(结构体变量s的所占的内存字节数)?

#include<stdio.h>

int main()
{
        union un
        {
                float x;
                float y;
                char c;
        };
        struct st
        {
                union un v;
                float w;
                double u;
        }s;
        printf("%d\n",sizeof(s));
        return 0;
}

superbe 发表于 2019-9-20 22:12:05

https://blog.csdn.net/qq_42418668/article/details/89244607

https://www.cnblogs.com/weiyouqing/p/9685427.html

Mondayisgood 发表于 2019-9-20 22:23:27

6    v 的大小
float类型 为4
偏移量6不是4的整数倍,先移到12,刚好是4的整数,所以 6 + 6 + 4*5 = 32
接下来double 是8
32 刚好是8的整数倍,所以 32 + 8 = 40
页: [1]
查看完整版本: 为什么得到的结果是40(结构体变量s的所占的内存字节数)?