#include <stdio.h>
// 定义嵌套结构
struct Outer {
int m;
union Inner {
float f;
double d;
} inner;
};
int main() {
// 初始化嵌套结构
struct Outer obj = {
.m = 10,
.inner.f = 3.14f
};
// 通过不同方式访问成员
printf("m的值: %d\n", obj.m);
printf("f的值: %f\n", obj.inner.f);
// 注意事项:
// 1. 初始化时,根据实际需求选择union中合适的成员进行初始化。
// 2. 访问union成员时,要确保访问的是最近一次赋值的成员,因为union成员共享内存,
// 后赋值的成员会覆盖之前的值,否则可能得到错误的结果。
return 0;
}
- 初始化注意事项:
- 对于
struct
的int
成员m
,可以像普通变量一样进行初始化。
- 对于
union
,由于它的成员共享内存,同一时间只能有一个成员有效。所以在初始化union
时,根据实际需求选择float
成员f
或double
成员d
进行初始化。
- 访问注意事项:
- 访问
struct
的int
成员m
,直接通过结构体变量加成员访问运算符(.
)访问即可。
- 访问
union
成员时,要确保访问的是最近一次赋值的成员。例如在上述代码中,我们初始化了obj.inner.f
,那么后续访问obj.inner.f
是安全的,如果访问obj.inner.d
,会得到未定义行为,因为d
没有被正确初始化。