union内嵌struct赋初值
时间: 2023-07-17 20:01:03 浏览: 54
对于内嵌在 union 中的 struct ,可以使用以下方式进行赋初值:
```c
#include <stdio.h>
typedef struct {
int x;
int y;
} Point;
typedef union {
int num;
Point point;
} Data;
int main() {
Data data;
// 给 union 内的 int 类型成员赋值
data.num = 10;
printf("num: %d\n", data.num);
// 给 union 内的 struct 类型成员赋值
data.point.x = 20;
data.point.y = 30;
printf("point: (%d, %d)\n", data.point.x, data.point.y);
return 0;
}
```
在上面的示例中,我们定义了一个内嵌的 struct `Point` 和一个 union `Data` ,其中 `Data` 包含了一个 int 类型的成员 `num` 和一个 struct 类型的成员 `point` 。我们可以通过给 `data.num` 赋值来初始化 union 内的 int 类型成员,或者通过给 `data.point.x` 和 `data.point.y` 赋值来初始化 union 内的 struct 类型成员。输出结果为:
```
num: 10
point: (20, 30)
```
请注意,union 中所有成员共享同一块内存空间,因此对其中一个成员的赋值会影响其他成员的值。此外,使用 union 需要注意内存对齐的问题,以确保数据的正确访问和使用。