我正在尝试计算二进制文件的记录大小。 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;
答案 0 :(得分:3)
谷歌搜索,(只是寻找工会c),你会在第一篇文章中找到:
联合是C中可用的特殊数据类型,使您可以在同一内存位置存储不同的数据类型。
所以,你的联盟将使用你内在的三个结构中最大的内存,而不是所有这三个结构的总和。
可以找到更多信息here