C语言结构体、联合体与动态内存分配全解析
1. 结构体与联合体基础
1.1 变体记录与联合体的应用
在一些实际场景中,内存的特定区域需要在不同时间存储不同类型的值。以一个库存系统为例,该系统需要跟踪两种不同的实体:零件(parts)和子组件(subassemblies)。
零件是从其他制造商购买的小工具,具有成本、供应商等属性;子组件是由多个零件和其他子组件组合而成的,由我们自己制造。
下面是相关结构体的定义:
struct PARTINFO {
int cost;
int supplier;
...
};
struct SUBASSYINFO {
int n_parts;
struct {
char partno[10];
short quan;
} parts[MAXPARTS];
};
库存记录包含每个条目的公共信息和一个联合体,用于存储零件信息或子组件信息:
struct INVREC {
char partno[10];
int quan;
enum { PART, SUBASSY } type;
union {
struct PARTINFO part;
struct SUBASSYINFO subassy;
} info;
};
以下是一些操作 INVREC <