联合体(Union)
定义
联合体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的联合体,但是任何时候只能有一个成员带有值。联合体提供了一种使用相同的内存位置的有效方式。
示例代码
#include <stdio.h>
// 定义联合体
union Data {
int i;
float f;
char str[20];
};
int main() {
union Data data;
data.i = 10;
printf("data.i: %d\n", data.i);
data.f = 220.5;
printf("data.f: %f\n", data.f);
strcpy(data.str, "C Programming");
printf("data.str: %s\n", data.str);
return 0;
}
代码解释
在上述代码中,我们定义了一个名为 `Data` 的联合体,它包含一个整数 `i`、一个浮点数 `f` 和一个字符数组 `str`。由于联合体的所有成员共享同一块内存,因此在给不同成员赋值时,会覆盖之前存储的值。
枚举(Enum)
定义
枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。枚举类型是由程序员定义的一种数据类型,它由一组命名的整数常量组成。
示例代码
#include <stdio.h>
// 定义枚举类型
enum Weekday {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
int main() {
enum Weekday today = WEDNESDAY;
switch (today) {
case MONDAY:
printf("今天是星期一\n");
break;
case TUESDAY:
printf("今天是星期二\n");
break;
case WEDNESDAY:
printf("今天是星期三\n");
break;
case THURSDAY:
printf("今天是星期四\n");
break;
case FRIDAY:
printf("今天是星期五\n");
break;
case SATURDAY:
printf("今天是星期六\n");
break;
case SUNDAY:
printf("今天是星期日\n");
break;
default:
printf("无效的日期\n");
}
return 0;
}
代码解释
在上述代码中,我们定义了一个名为 `Weekday` 的枚举类型,它包含了一周的七天。枚举常量默认从 0 开始依次递增,因此 `MONDAY` 的值为 0,`TUESDAY` 的值为 1,以此类推。