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,请问是如何计算出来的啊?

阅读 2.6k
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字节
};

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题