共用体的定义和声明
#include <stdio.h>
// 定义一个共用体类型
union Data {
int intValue;
float floatValue;
char stringValue[20];
};
int main() {
// 声明共用体变量
union Data myData;
// 初始化共用体的不同成员
myData.intValue = 10;
printf("intValue: %d\n", myData.intValue);
myData.floatValue = 3.14;
printf("floatValue: %.2f\n", myData.floatValue);
strcpy(myData.stringValue, "Hello");
printf("stringValue: %s\n", myData.stringValue);
// 共用体的大小是其最大成员的大小
printf("Size of union Data: %lu bytes\n", sizeof(union Data));
return 0;
}
共用体的应用场景
共用体通常用于需要在不同数据类型之间进行切换的情况。例如,可以使用共用体表示一个数据类型可以是整数、浮点数或字符串:
#include <stdio.h>
// 定义一个共用体类型
union Value {
int intValue;
float floatValue;
char stringValue[20];
};
// 枚举类型表示数据类型
enum Type {
INTEGER,
FLOAT,
STRING
};
// 结构体表示通用的数据结构
struct Data {
enum Type type;
union Value value;
};
int main() {
// 使用共用体和枚举实现通用的数据结构
struct Data myData;
// 存储整数
myData.type = INTEGER;
myData.value.intValue = 42;
// 获取整数值
printf("Value: %d\n", myData.value.intValue);
// 存储浮点数
myData.type = FLOAT;
myData.value.floatValue = 3.14;
// 获取浮点数值
printf("Value: %.2f\n", myData.value.floatValue);
// 存储字符串
myData.type = STRING;
strcpy(myData.value.stringValue, "Hello, Union!");
// 获取字符串值
printf("Value: %s\n", myData.value.stringValue);
return 0;
}
共用体提供了一种在不同数据类型之间共享内存的方式,但需要谨慎使用,因为它没有类型检查,可能导致数据类型不一致的错误。
转载请注明出处:http://www.zyzy.cn/article/detail/13528/C 语言