C语言结构体字节数计算

#include <stdio.h>

int main()
{
    int num;
    struct date 
    {
        int year,month,day;
    };

    struct person
    {
        char name[10];
        char sex;
        struct date birthday;
        char address[10];
        long zipcode;
    };
    num = sizeof(struct person);
    printf("%d\n",num);
    return 0;
}

这个题,最后输出结果是48,请问是如何计算出来的啊?

阅读 305
评论 更新于 2019-07-20
    2 个回答
    
    #pragma pack (4) // 默认内存对齐模式
    struct person
    {
        char name[10];        // 12字节,两个占位
        char sex;             //  4字节,三个占位
        struct date birthday; // 12字节,刚好三个int4个字节
        char address[10];     // 12字节,两个占位
        long zipcode;         //  8字节
    };

    当然,这个和编译器有关了

    评论 赞赏 2019-07-20
      scherman
      • 2.9k

      结构体的分配内存数量不光是其内部成员决定的,还会受字节边界对齐影响。

      评论 赞赏 2019-07-20
        撰写回答

        登录后参与交流、获取后续更新提醒