union和结构体的区别
时间: 2024-05-28 15:04:52 浏览: 14
union和结构体都是用来组织数据的数据类型,但它们有以下几点区别:
1. union中所有成员共用同一块内存空间,而结构体中每个成员都有自己的内存空间。
2. union中所有成员的地址都是相同的,而结构体中每个成员的地址是连续的。
3. union中只能同时使用一个成员,而结构体中可以同时使用多个成员。
举个例子,假设我们有以下定义:
```
union Data {
int i;
float f;
char str[20];
};
struct Person {
char name[50];
int age;
float height;
};
```
那么我们可以这样使用union:
```
union Data data;
data.i = 10;
printf("%d\n", data.i); // 输出 10
data.f = 3.14;
printf("%f\n", data.f); // 输出 3.140000
strcpy(data.str, "hello");
printf("%s\n", data.str); // 输出 hello
```
而使用结构体则是这样的:
```
struct Person person;
strcpy(person.name, "Tom");
person.age = 20;
person.height = 1.75;
printf("%s %d %f\n", person.name, person.age, person.height); // 输出 Tom 20 1.750000
```
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)