如果没有为甚么?结合使用结构?
解决方法
您可以使用联合中的任何数据类型,没有限制.
关于联合体在结构上的使用,结构在记忆中顺序排列数据.这意味着所有的子组件都是分开的.
另一方面,联盟对其所有子组件使用相同的内存,因此一次只能存在一个.
例如:
+-----+-----+ struct { int a; float b } gives | a | b | +-----+-----+ ^ ^ | | memory location: 150 154 | V +-----+ union { int a; float b } gives | a | | b | +-----+
结构用于“对象”由其他对象组成,如由两个整数组成的点对象,即x和y坐标:
typedef struct { int x; // x and y are separate int y; } tPoint;
通常,在对象可以是许多事物之一但一次只能使用一个对象的情况下使用工会,例如无类型的存储系统:
typedef enum { STR,INT } tType; typedef struct { tType typ; // typ is separate. union { int ival; // ival and sval occupy same memory. char *sval; } } tVal;
它们对于节省内存是有用的,尽管现在越来越少的关注(除了在嵌入式系统的低级工作之外),所以你看不到很多.