union 联合体(先不看)¶
共享存储空间¶
联合体也可以定义多个成员,但这些成员共用同一段存储空间。
结构体的成员,可以同时保存各自的数据;联合体的成员,不能这样理解。
换成 symbol 后,不要再认为原来的 num 仍然保存着 10。
占用多少空间¶
sizeof(Data) 至少能放下最大的成员,还可能因为对齐而包含填充。
不是把所有成员的大小加起来,也不能认定永远恰好等于最大成员的大小。
联合体适合“同一时刻只需要保存其中一种数据”的情况,但程序要记清楚当前保存的是哪一种。
常见错误¶
写一个成员,却随意读另一个成员。
这不是通用的类型转换方法。本阶段先按“写哪个成员,就读哪个成员”来使用。
不能因为节省空间,就拿 union 代替所有 struct。
学生的姓名、学号、成绩需要同时存在,这种情况用结构体。