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

清浅 136
2019-07-20 提问
2 个回答
0

已采纳

#pragma pack (4) // 默认内存对齐模式
struct person
{
    char name[10];        // 12字节,两个占位
    char sex;             //  4字节,三个占位
    struct date birthday; // 12字节,刚好三个int4个字节
    char address[10];     // 12字节,两个占位
    long zipcode;         //  8字节
};

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

0

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

撰写答案

推广链接