1 - 联合体内嵌结构体初始化赋值
union {
struct {
int i;
float f;
char *p;
};
int o;
} obj3 = { 1, 2.2, "sk", 4, 9 };
printf("struct inlay union: %d, %f, %s, %d\n", obj3.i, obj3.f, obj3.p, obj3.o);
输出:
struct inlay union: 1, 2.200000, sk, 1
说明:
a. 在union
中,所有的成员共享同一块内存空间。这意味着,在任何给定的时间,只有一个成员可以持有值。在上述代码中,union
的初始化是匿名的,所以是对其第一个成员(一个struct
)进行的。因此,o
成员并没有被初始化
b. 若要o
成员生效,就需要显示初始化,即 obj3 = { 1, 2.2, "sk", .o=4, 9 };
c. 初始化成员个数超过定义的成员个数,则超出的赋值会忽略,但还是建议按个数赋值
标签:知识点,obj3,struct,初始化,union,成员,笔记,sk,C++ From: https://www.cnblogs.com/skullboyer/p/17957039