内容正文:
第9章 结构体、共用体与枚举类型
本章内容
9.1结构体类型的定义
9.2结构体变量
9.3结构体数组
9.4结构体类型指针
9.5结构体与函数
9.6链表
9.7共用体类型
9.8枚举类型
9.9类型定义
9.10综合案例
9.8枚举类型
枚举类型和枚举变量
枚举类型定义的一般形式为:
enum 枚举名
{ 枚举值表 };
例如:
enum weekday
{sun,mon,tue,wed,thu,fri,sat};
枚举变量的说明
先定义枚举类型,后说明变量
例如:
enum weekday
{sun,mon,tue,wed,thu,fri,sat};
enum weekday a,b,c;
枚举变量的说明
定义枚举类型同时定义变量
例如:
enum weekday
{sun,mon,tue,wed,thu,fri,sat}a,b,c;
或为:
enum
{sun,mon,tue,wed,thu,fri,sat}a,b,c;
枚举类型变量的赋值和使用
枚举值是常量,不是变量,不能在程序中用赋值语句再对它赋值
枚举元素的值是一个顺序的值,默认由系统定义,从0 开始顺序定义为0,1,2…
例如:
main()
{
enum weekday
{ sun,mon,tue,wed,thu,fri,sat } a,b,c;
a=sun;
b=mon;
c=sat;
printf("a=%d,b=%d,c=%d",a,b,c);
}
枚举类型变量的赋值和使用
可以自己定义枚举类型元素的值,定义一个元素的值后,后面没有定义值的元素的值将顺序加1
例如:
enum weekday
{sun=5,mon,tue,wed=10,thu,fri,sat}a,b,c;
上面weekday枚举类型的元素值分别为:sun=5,mon=6,tue=7,wed=10,thu=11,fri=12,sat=13。
枚举类型变量的赋值和使用
枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号
程序举例
【例9.12】输入1~12月份,根据月份输出对应的英文单词。
#include “stdio.h”
main()
{
enum month
{ jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec }a;
printf(“
Please input month(1~12):”);
scanf(“%d”,&a);
switch(a)
{
case jan:
printf("January
");
break;
case feb:
printf("February
");
break;
case mar:
printf("March
");
break;
case apr:
printf("April
");
break;
case may:
printf("May
");
break;
case jun:
printf("June
");
break;
case jul:
printf("July
");
break;
case aug:
printf("August
");
break;
case sep:
printf("September
");
break;
case oct:
printf("October
");
break;
case nov:
printf("November
");
break;
case dec:
printf("December
");
break;
default:
printf(“Error
”);
break;
}
}
9.9类型定义
C语言不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说明符
定义的一般形式为:
typedef 原类型名 新类型名;
例如:
typedef int INTEGER;
int a,b;
或
INTEGER a,b;
两者是完全等价的
定义结构体、共用体、枚举类型
例如:
struct student
{
int num;
char name[20];
char sex;
int age;
};
typedef struct student STUDENT;
STUDENT s1,s2,*s;
定义数组类型
typedef int INTARRAY[20];
INTARRAY a,b;
上面的语句定义了INTARRAY为整型数组,数组长度为20
例如:
main()
{
typedef int INTARRAY[20];
INTARRAY a,b;
int i;
for(i=0;i<20;i++)
a[i]=i;
for(i=0;