【发布时间】:2020-06-26 18:22:45
【问题描述】:
我有一个教程中的代码示例,上面写着
struct goods {
char name[20];
union quantity {
int count;
float weight, volume;
} q;
};
我不明白为什么我们需要声明“q”变量以及联合类型名称“数量”?为什么我们不能只使用“数量”,然后通过点访问结构字段?
更新:“数量”是联合类型的名称/标签是否正确,而“q”不是变量,而是包含子成员(计数、重量、体积)?
【问题讨论】:
-
这样做可以节省内存使用量。
-
@TogtokhKhorchin OP 询问为什么要命名联合,而不是为什么要使用它。
-
显然代码是在匿名联合 were allowed 之前编写的 some time ago。
-
union quantity是类型,q是字段。 -
@RobertSsupportsMonicaCellio:是的,它是正确的。
q是struct goods的成员(在某些情况下也称为字段),q包含子成员。该问题并未询问或暗示q是否是“工会本身的成员”。