资源描述:
《《构造数据类型》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章构造数据类型C++语言程序设计教程第5章构造数据类型制作人:沈显君第5章 构造数据类型1.掌握枚举类型的使用;2.深入理解数组的概念,掌握数组应用的一般方法;3.深入理解指针的概念,掌握指针的使用;4.注意指针与数组的区别,会使用多重指针以及指针与数组的多种混合体,会分配动态数组;5.理解字符串的概念,会使用字符串;6.理解引用的概念,掌握引用型函数参数的用法;7.掌握结构与联合类型的使用,并注意二者的区别。学习目标C++语言程序设计教程第5章构造数据类型5.1枚举类型1.枚举类型的定义:“枚举”是指将变量所有可
2、能的取值一一列举出来,变量的取值只限于列举出来的常量。枚举类型的声明的一般形式如下:枚举类型名以及枚举常量为标识符,遵循标识符的取名规则。在定义一个枚举类型时,定义了多个常量,供枚举类型变量取值,称此常量为枚举常量。当没给各枚举常量指定值时,其值依次默认为0、1、2、…;在定义枚举类型时,也可使用赋值号另行指定枚举常量的值。enum枚举类型名{枚举常量1,枚举常量2,…,枚举常量n};枚举!C++语言程序设计教程第5章构造数据类型5.1枚举类型枚举类型的定义:例1:enumweekday{SUN,MON,TUE,WED
3、,THU,FRI,SAT};定义了7个枚举常量以及枚举类型weekday。枚举常量具有默认的整数与之对应:SUN的值为0、MON的值为1、TUE为2、…、SAT为6。例2:enumcity{Beijing,Shanghai,Tianjin=5,Chongqing};枚举常量Beijing的值为0,Shanghai的值为1,Tianjin的值指定为5。对于指定值后面的没有指定值的枚举常量,编译器会将前一个常量值加1(下一个整数)赋给它,所以Chongqing的值为6。C++语言程序设计教程第5章构造数据类型5.1枚举类型
4、枚举类型的定义说明:枚举类型定义了以后就可以使用枚举常量、使用用枚举类型来定义变量,定义枚举变量的方法与定义其它变量的方法一样。例如:enumcitycity1,city2;citycity1,city2;用两种方法定义了city1、city2两个枚举类型的变量名。枚举类型变量也可以在定义枚举类型的同时定义例如:enumcity{Beijing,Shanghai,Tianjin=5,Chongqing}city1,city2;在定义枚举类型的同时定义枚举类型变量可以省略枚举类型名例如:enum{Beijing,Shan
5、ghai,Tianjin=5,Chongqing}city1,city2;在定义变量时,可以顺便给出初值,若不给初值,默认初值为随机的无意义的数。C++语言程序设计教程第5章构造数据类型5.1枚举类型枚举类型的使用:用枚举类型建立枚举变量后就可以对枚举变量实施赋值以及进行其它运算了,对枚举变量进行赋值,其值要求为同一枚举类型。否则,在编译时出错。例如:weekdayd1,d2,d3,d4;d1=SUN;d2=6;//错误d3=Shanghai;//错误其中对d2所赋之值是整数6,不是枚举常量;可以采用将一个整型值强制转
6、换成同类型的枚举常量赋给枚举变量:枚举常量、枚举类型的变量可进行算术运算、关系运算。对枚举类型实施算术、关系运算时,枚举值转换成整型值参加运算,结果为整型值。所以,如果要将结果赋给枚举变量,还要将结果转换成枚举值。例如:d1=d1+2;//是错误的,因为结果为int型。需要将它强制转换成枚举型:d1=(weekday)(d1+2);C++语言程序设计教程第5章构造数据类型5.1枚举类型枚举类型的使用:枚举常量、枚举类型的变量可直接进行各种形式的关系运算。例如:if(city1==3);if(city2>=Beijing
7、);if(Shanghai==1);if(city1>SUN);枚举类型变量不能直接进行输入例如:cin>>d1;//错误C++语言程序设计教程第4章函数注意:枚举常量是常量,不是变量,所以不能对枚举常量进行赋值。例如:在上例中不能进行赋值Shanghai=Beijing;枚举常量的值不是列举的字符串,其值为整数。编译器对赋给枚举变量的对象(数)进行类型检查,如类型不相符则发出警告。当类型相同,而值超出此类枚举类型枚举常量范围时,也是正常的。/*************************************
8、******************************程序名:p5_1.cpp**功能:枚举类型的使用,输入城市代号,输出城市名称********************************************************************/#includeusingnamesp