1

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

例如

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;
4

1 回答 1

3

谷歌搜索了一下,(只是寻找 union c),你会在第一篇文章中发现:

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

因此,您的联合将使用与您在其中的三个结构中最大的内存一样多的内存,而不是所有三个结构的总和。

更多信息可以在这里找到

于 2013-05-28T23:08:09.330 回答