《第7章枚举类型体.ppt》由会员分享,可在线阅读,更多相关《第7章枚举类型体.ppt(6页珍藏版)》请在三一办公上搜索。
1、C+程序设计主编王淮亭第7章结构体,1,*7.7 枚举,在程序设计中,有时要处理非数值的数据,例如:颜色、星期、性别、职业、课程等,这时一般用一个数值代表一个状态。为了提高程序描述的直观性,引入枚举方法列举一组标识符作为枚举类型值的集合。枚举类型定义的一般形式是:,enum 类型名 标识符1,标识符2,标识符n;其中enum是关键字,是枚举类型的引导字。如enum weekday sun,mon,tue,wed,thu,fri,sat;定义了一个枚举类型enum weekday,可以用此类型来定义变量。如 enum weekday today,yesterday,tomorrow;变量toda
2、y,yesterday,tomorrow被定义为枚举变量,它们的值只能是sun到sat之一。,C+程序设计主编王淮亭第7章结构体,2,用什么标识符代表什么含义,完全由编程者自己选择,以易于理解为宜,这里应该注意以下几个问题:1)在C+编译中,对枚举元素按常量处理,故称枚举常量。它们不是变量,不能对它们赋值。2)枚举元素作为常量,它们是有值的,C+语言编译按定义时的顺序使它们的值为0、1、2、3)枚举值可以用来作判断比较。4)一个整数不能直接赋给一个枚举变量。5)应该注意枚举类型名、枚举变量与枚举常量的区别。,C+程序设计主编王淮亭第7章结构体,3,7.8 用typedef定义类型,在使用标准类
3、型名定义变量时,可只写标准类型名指明变量的数据类型。而用前面介绍的结构体、共用体、枚举类型定义或说明变量时,要冠以表明数据类型类别的关键字,如struct、union、enum等。但C+语言提供用定义新类型命名的机制,对于结构体、共用体或枚举类型,可以使用typedef为它们定义新类型名,从而使说明变量时不必要再冠以类型类别关键字。,C+程序设计主编王淮亭第7章结构体,4,例如:1)typedef struct int no;char name16;float score;student;/定义结构体类型student 2)typedef char MNAME20;/说明了最多能赋20字符的字
4、符数组类型MNAME 3)typedef int INTARRAY20;/说明了含20个整数的数组类型INTARRAY 4)typedef enum red,yellow,blue,greenCOLOR;/说明了枚举类型COLOR,C+程序设计主编王淮亭第7章结构体,5,经上面定义之后,可定义变量如下:1)student st1,st2;/定义两个结构体变量 2)MNAME ch1,ch2;/定义两个字符串变量,即字符数组ch1、ch2 3)INTARRAY N1,N2;/定义两个整型数组N1、N2 4)COLOR c1,c2;/定义两个枚举型变量在以上变量定义中,对于结构体、枚举等类型,不必
5、再冠以类型类别关键字。特别对于数组类型,当有多个数组的成份类型相同、元素个数也相同,先用typedef定义一个数组类型,然后再定义数组就比较方便了。如类型 定义:typedef float ARR100;ARR x,y,z;变量x,y,z是一个含有100个浮点型元素的数组,相当于folat x100,y100,z100;,C+程序设计主编王淮亭第7章结构体,6,用typedef除定义新的类型时,还可以给已有的类型定义一个别名。如类型定义 typedef int INTEGER;/给int 定义一个别名 INTEGER typedef float REAL;/给float 定义一个别名REAL 用INTEGER和REAL定义变量 INTEGER n,m;REAL X,Y;可等价以下定义 int n,m;float x,y;同样,C+语言可以定义指针等类型:1)typedef char CHAR10;2)ypedef CHAR*PCHAR;3)typedef PCHAR FCHAR();4)ypedef FCHAR*PFCHAR;程序用typedef定义类型,只是为类型命名,或为已有的类型命别名。用typedef定义的类型名来定义变量,与直接写出变量的类型再定义变量,具有完全相同的效果。,