union和struct
时间: 2024-01-07 18:06:25 浏览: 64
在C++中,union和struct是两种不同的数据类型。struct用于定义一个包含多个不同数据类型成员变量的数据类型,而union则用于定义一个同时具有多种不同数据类型的变量。例如,一个union可以同时包含一个整型、一个浮点型和一个字符型等不同类型的变量,但只有一个成员变量可以有效地存在于union中。这就是union特别之处,它的所有成员变量共享它的内存。
相关问题
union和struct区别
union和struct都是用来定义自定义数据类型的关键字,但它们有着不同的特点和用途。
struct是一种数据结构,它可以包含多个不同类型的成员变量,这些成员变量在内存中是按照定义顺序依次排列的,每个成员变量占用一定的内存空间,结构体的大小就是所有成员变量大小的总和。
而union也是一种数据结构,它也可以包含多个成员变量,但是这些成员变量共用同一块内存空间,也就是说,union的大小只取决于最大的成员变量的大小,而不是所有成员变量大小的总和。
因此,struct适合用来表示多个不同类型的数据,而union适合用来表示同一块内存空间中的不同解释方式的数据。
union和struct用法
`union` 和 `struct` 是 C 语言中用来定义复合数据类型的关键字。
`struct` 用来定义一个包含多个成员变量的复合数据类型,每个成员变量可以是不同的数据类型,例如:
```
struct Student {
char name[20];
int age;
float grade;
};
```
这个 `struct` 定义了一个名为 `Student` 的复合数据类型,包含了三个成员变量:`name`,`age` 和 `grade`。
而 `union` 也是用来定义一个包含多个成员变量的复合数据类型,但它的特点是各个成员变量共用同一块内存空间,例如:
```
union Data {
int i;
float f;
char str[20];
};
```
这个 `union` 定义了一个名为 `Data` 的复合数据类型,包含了三个成员变量:`i`,`f` 和 `str`,但是这三个成员变量共用同一块内存空间,即修改其中一个成员变量的值会影响到其他成员变量。
使用方式上,可以通过 `.` 或 `->` 运算符来访问结构体或联合体中的成员变量,例如:
```
struct Student s;
s.age = 18;
printf("My age is %d\n", s.age);
union Data d;
d.i = 10;
printf("d.i = %d, d.f = %f, d.str = %s\n", d.i, d.f, d.str);
```
这段代码中,我们使用了 `.` 运算符来访问结构体 `Student` 中的 `age` 成员变量,使用了 `.` 和 `->` 运算符来访问联合体 `Data` 中的成员变量。
阅读全文