typedef enum 数据类型,别名a,内容有周一到周日。定义 a *b,怎么通过b来判断状态是周一还是周几,枚举值怎么赋值
时间: 2024-03-18 20:40:13 浏览: 102
假设我们已经用 `typedef enum` 定义了名为 `Weekday` 的枚举类型,其中包含了周一到周日的所有枚举值,如下所示:
```c
typedef enum {
MONDAY = 1,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
} Weekday;
```
在这里,我们使用 `=` 操作符为 `MONDAY` 赋值为 1,后续的枚举值会依次递增。这样就可以保证每个枚举值都是唯一的,且可以用数字来表示。
现在,我们可以通过定义一个 `Weekday` 类型的指针 `b`,来指向一个 `Weekday` 枚举值的地址。如下所示:
```c
Weekday *b;
```
要判断 `b` 所指向的枚举值是周几,可以使用 `switch` 语句来进行判断。例如:
```c
switch (*b) {
case MONDAY:
printf("Today is MONDAY.\n");
break;
case TUESDAY:
printf("Today is TUESDAY.\n");
break;
case WEDNESDAY:
printf("Today is WEDNESDAY.\n");
break;
case THURSDAY:
printf("Today is THURSDAY.\n");
break;
case FRIDAY:
printf("Today is FRIDAY.\n");
break;
case SATURDAY:
printf("Today is SATURDAY.\n");
break;
case SUNDAY:
printf("Today is SUNDAY.\n");
break;
default:
printf("Invalid input.\n");
break;
}
```
这样,根据 `b` 所指向的枚举值,就可以判断是周一到周日中的哪一天了。
如果要给枚举值赋值,可以在定义枚举类型时使用 `=` 操作符。在上面的代码中,我们给 `MONDAY` 赋值为 1,后续的枚举值会依次递增。如果不给枚举值赋值,那么它们的值将会自动递增。
阅读全文