举例说明union在结构体中的应用
时间: 2023-07-09 07:18:25 浏览: 88
下面是一个使用union在结构体中的例子:
```
#include <stdio.h>
#include <string.h>
struct Item {
int type;
union Data {
int i;
float f;
char str[20];
} data;
};
int main() {
struct Item item1, item2;
item1.type = 1;
item1.data.i = 10;
item2.type = 2;
item2.data.f = 3.14;
printf("item1.type is %d and item1.data.i is %d\n", item1.type, item1.data.i);
printf("item2.type is %d and item2.data.f is %f\n", item2.type, item2.data.f);
strcpy(item1.data.str, "Hello");
printf("item1.data.str is %s\n", item1.data.str);
return 0;
}
```
在这个例子中,我们定义了一个名为Item的结构体,其中包含一个整型变量type和一个union Data,该union包含整型变量i、浮点型变量f和字符型数组str。在main函数中,我们定义了两个Item类型的变量item1和item2,并给它们的type和data成员赋值。我们可以看到,使用union可以让不同类型的数据共享同一块内存空间,从而节省内存的使用。在这个例子中,我们还给item1的data成员赋值了一个字符串,这个字符串的长度超过了字符型数组str的长度,这是非常危险的做法,因为它可能会导致内存溢出。因此,在使用union时,我们需要非常小心,确保不会修改或使用错误的成员。
阅读全文