c语言union和struct有什么区别 请用代码说明
C语言中,union和struct是两种不同的数据类型。它们的主要区别在于内存分配和使用方式。
struct是一种用于定义组合数据类型的数据结构。它允许你为多个不同的数据类型分配内存,并在同一个结构体中进行管理。每个成员变量都有自己的内存地址,因此可以同时存储不同类型的数据。
union是一种特殊的结构体,它允许你在同一个内存地址上存储多个不同的数据类型。union的所有成员变量占用同一块内存,因此只能同时存储一种数据类型。
下面是一个使用struct和union的例子:
#include <stdio.h>
struct Student {
char name[20];
int age;
float score;
};
union Data {
int i;
float f;
char str[20];
};
int main() {
// 使用struct
struct Student s = {"Tom", 18, 90.5};
printf("Name: %s\nAge: %d\nScore: %.1f\n", s.name, s.age, s.score);
// 使用union
union Data d;
d.i = 100;
printf("d.i = %d\n", d.i);
d.f = 3.14;
printf("d.f = %.2f\n", d.f);
strcpy(d.str, "Hello");
printf("d.str = %s\n", d.str);
return 0;
}
在上面的代码中,我们首先定义了一个struct类型的结构体Student,它包含三个成员变量:name、age和score。我们创建了一个Student类型的结构体变量s,并初始化它的成员变量。然后我们使用printf输出结构体的各个成员变量。
接下来,我们定义了一个union类型的变量d,它包含三个成员变量:i、f和str。我们首先给d的整型成员变量i赋值,然后输出它的值。接着我们给d的浮点型成员变量f赋值,再次输出它的值。最后,我们使用strcpy函数给d的字符型成员变量str赋值,并输出它的值。
从上面的例子可以看出,使用struct可以同时存储多种不同类型的数据,而使用union只能同时存储一种数据类型。因此,在实际编程中,我们应根据实际需求选择合适的数据类型
原文地址: https://www.cveoy.top/t/topic/hsGD 著作权归作者所有。请勿转载和采集!