第7章 自定义数据类型.08

上传人:飞*** 文档编号:6441424 上传时间:2017-08-08 格式:PPT 页数:44 大小:244.50KB
返回 下载 相关 举报
第7章 自定义数据类型.08_第1页
第1页 / 共44页
第7章 自定义数据类型.08_第2页
第2页 / 共44页
第7章 自定义数据类型.08_第3页
第3页 / 共44页
第7章 自定义数据类型.08_第4页
第4页 / 共44页
第7章 自定义数据类型.08_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《第7章 自定义数据类型.08》由会员分享,可在线阅读,更多相关《第7章 自定义数据类型.08(44页珍藏版)》请在金锄头文库上搜索。

1、1,第7章 自定义数据类型,2,本章内容,结构体类型共用体枚举类型用typedef声明类型,3,教学目标,了解结构体类型、共用体类型、枚举类型的概念;掌握结构体类型、共用体类型和枚举类型的定义与方法;会用结构体类型、共用体类型与枚举类型定义变量;会用结构体类型、与枚举类型解决实际问题;,4,定义:,将不同种类型的数据有序地组合在一起,构造出一个新的数据类型,这种形式称为结构体。,结构体是多种类型组合的数据类型。,5,struct 结构体名 成员列表 ;,struct student int num; char name20; char sex; char addr30; ;,结构体名,关键字,

2、不同数据类型组成的成员,分号不能少,6,定义结构体类型变量的方法,一、先定义结构体类型再定义变量名,struct student int num; char name20; char sex; int age; float score; char addr30;,student student1, student2;,结构体类型名,变量1,变量2,结构体类型只是一种数据类型,不占内存空间,只有定义结构体类型变量时才开辟内存空间。,7,二、在定义类型的同时定义变量,struct student int num; char name20; char sex; int age; float scor

3、e; char addr30; student1, student2;,struct 结构体名 成员列表 变量名列表;,紧接着定义变量,8,三、直接定义结构体类型变量(不提倡),struct int num; char name20; char sex; int age; float score; char addr30; student1, student2;,struct 成员列表 变量名列表;,不出现结构体名。,9,2、在编译时,仅对变量分配空间,不对类型分配空间。,1、结构体类型的变量在内存依照其成员的顺序顺序排列,所占内存空间的大小是其全体成员所占空间的总和。,3、对结构体中各个成员

4、可以单独引用、赋值,其作用与变量等同。,格式:变量名.成员名 student1.num,“.”是成员运算符,它在所有运算符中优先级别最高,因此可以把student1.num当作一个整体来看待。,10,4、结构体的成员可以是另一个结构体类型。,struct date int month; int day; int year; ;,struct student int num; char name20; date birthday; ;,成员类型,成员名,5、成员名可以与程序中的变量名相同,二者分占不同的内存单元,互不干扰。例如,在程序中仍可以定义变量 int num;,11,对局部变量类型的结构

5、体变量初始化,void main(void) struct student long int num; char name20; char sex; char addr30; student1=9063101, “Li Lin”, M, “123 Beijing Road”;coutstudent1.namestudent1;,cinstudent1.num; student1.num=100;,可以将一个结构体变量整体赋给另外一个相同类型的结构体变量。 student2=student1;,2、嵌套的结构体变量必须逐层引用。,student1.birthday.day=25;,3、结构体变量

6、中的成员可以同一般变量一样进行运算。,student1.birthday.day+; student1.score+=60;,错误,必须用成员名引用,“.”是成员运算符,它在所有运算符中优先级别最高,因此可以把student1.num当作一个整体来看待。,13,引用结构体变量中的成员(应用),#include using namespace std;struct Date int month; int day; int year; ; struct Student int num; char name20; char sex; Date birthday; float score; stude

7、nt1,student2=10002,Wang Li,f,5,23,1982,89.5;,int main()student1=student2; coutstudent1.numendl; coutstudent1.nameendl; coutstudent1.sexendl;coutstudent1.birthday.month/student1.birthday.day/;coutstudent1.birthday.yearendl; coutstudent1.scoreendl; return 0;,14,关于结构类型变量的使用,说明以下几点:1、同类型的结构体变量之间可以直接赋值。这

8、种赋值等同于各个成员的依次赋值。 2、结构体变量不能直接进行输入输出,它的每一个成员能否直接进行输入输出,取决于其成员的类型,若是基本类型或是字符数组,则可以直接输入输出。3、结构体变量可以作为函数的参数,函数也可以返回结构体的值。当函数的形参与实参为结构体类型的变量时,这种结合方式属于值调用方式,即属于值传递。,15,结构体数组,结构体数组中的每个元素都是一个结构体类型的变量,其中包括该类型的各个成员。数组各元素在内存中连续存放。,16,一、结构体数组的定义,struct student int num; char name20; char sex; int age; float score

9、; char addr30; ; student stu30;,struct student int num; char name20; char sex; int age; float score; char addr30; stu30;,直接定义,17,二、结构体数组的初始化,struct student int num; char name20; char sex; stu3= 1011, Li Lin,M, 1012,Wang Lan,F, 1013,Liu Fang,F;,指定元素个数,给数组初始化,18,struct student int num; char name20; ch

10、ar sex; stu = 1011,Li Lin,M, 1012,Wang Lan,F, 1013,Liu Fang,F;,不指定元素个数,给数组初始化,一个结构体常量应该包括结构体中全部成员的值。,19,以下程序的结果是:,/ceshi7-1int main(void) struct date int year, month, day; today; coutsizeof(date)endl; coutsizeof(today)endl; return 0;,12,20,根据下面的定义,能打印出字母M的语句是:,struct person char name9; int age; ;per

11、son class4= “Jone”,17, “Paul”,19, “Mary”,18, “Adam”,16;coutclass3.nameendl;coutclass3.name1endl;coutclass2.name1endl;coutclass2.name0endl;,输出:Adam,输出:d,输出:a,输出:M,21,例7.2 对候选人得票统计程序。设有3个人,最终只能1人当选为领导。今有10人参加投票,从键盘输入10人所投的候选人的姓名,要求最后输出这3个候选人的得票结果。(使用字符数组),#include #include using namespace std;struct P

12、erson char name20; int count; ;int main() Person leader3=Li,0,Zhang,0,Fu,0; int i,j; char leader_name20;,for(i=0;ileader_name; for(j=0;j3;j+) if ( strcmp( leader_name , leaderj.name ) = 0) leaderj.count + ; coutendl; for(i=0;i3;i+) cout leaderi.name :“ leaderi.count endl; return 0; ,22,例7.2 对候选人得票统计程序。设有3个人,最终只能1人当选为领导。今有10人参加投票,从键盘输入10人所投的候选人的姓名,要求最后输出这3个候选人的得票结果。(使用字符串),#include #include using namespace std;struct Person string name; int count; ;int main() Person leader3=Li,0,Zhang”,0,Fan,0; int i,j; string leader_name;,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号