联盟规模小于总会员数

时间:2013-05-28 23:03:56

标签: c

我正在尝试计算二进制文件的记录大小。 sizeof(union_data)如何小于union中的两个数据结构?

E.g。

struct hdr
{
    unsigned short hdr;
    char     hdr_name  [90];
    char     hdr_add1  [90];
    char     hdr_add2  [90];

};

struct data_info
{

    unsigned short no;
    char     name            [90];
    char     addr1           [90];
    char     addr2           [90];
    char     amount             [120];
    char     verb      [25];

};

union
{

    struct box_info_data box_buff;
    struct hdr dhdr;
    struct data_info  dinfo;

} dhdr_rec, ddata_rec;

1 个答案:

答案 0 :(得分:3)

谷歌搜索,(只是寻找工会c),你会在第一篇文章中找到:

联合是C中可用的特殊数据类型,使您可以在同一内存位置存储不同的数据类型。

所以,你的联盟将使用你内在的三个结构中最大的内存,而不是所有这三个结构的总和。

可以找到更多信息here