C++程序设计 丁亚涛 第7章 结构体、共用体、枚举

上传人:E**** 文档编号:89389964 上传时间:2019-05-24 格式:PPT 页数:20 大小:312.50KB
返回 下载 相关 举报
C++程序设计 丁亚涛 第7章 结构体、共用体、枚举_第1页
第1页 / 共20页
C++程序设计 丁亚涛 第7章 结构体、共用体、枚举_第2页
第2页 / 共20页
C++程序设计 丁亚涛 第7章 结构体、共用体、枚举_第3页
第3页 / 共20页
C++程序设计 丁亚涛 第7章 结构体、共用体、枚举_第4页
第4页 / 共20页
C++程序设计 丁亚涛 第7章 结构体、共用体、枚举_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《C++程序设计 丁亚涛 第7章 结构体、共用体、枚举》由会员分享,可在线阅读,更多相关《C++程序设计 丁亚涛 第7章 结构体、共用体、枚举(20页珍藏版)》请在金锄头文库上搜索。

1、7,结构体、共用体与枚举,结构体 共用体 枚举 结构体与指针 结构体与函数,本章导读,7.1.1 结构体和结构变量的定义 结构体是一种类型,结构体变量是具有结构体类型的变量。在使用中,必须先定义结构体类型,再定义具有这种类型的结构体变量。 结构体类型的定义格式如下: struct ; 其中,struct是定义结构类型的关键字,用来表示结构体类型。结构体类型中的成员说明包含成员的类型和名字。,7.1 结构体(struct),struct table char name20; double price; ;,定义结构体变量,1单独定义。先定义结构体类型,再单独定义结构体变量。定义结构体变量格式:

2、struct ;,2同时定义,即在定义结构体类型的同时定义结构体变量,struct Employee char name20; char sex; float salary; char phone11; ; struct Employee gy1,gy2;,struct Employee char name20; char sex; float salary; char phone11; gy1,gy2;,1变量说明中赋初值,称为初始化。其格式如下: struct =; 例如,前面定义的结构Employee,在定义Employee结构体变量时可以进行初始化: struct Employee g

3、y3 =“zhang”,“male”,2107.5,3158978; 2用赋值语句或输入语句为结构体成员赋值,例如: gy3.salary= 2100.05; cin gy3.salary; cin gy3.phone;,7.1.2 结构体成员的表示和结构体变量的赋值,#include struct table char name20; double price; ; void main() struct table t2=“Desk002“,140.5; struct table t1; t1.name0=D; t1.name1=1; t1.name2=0; t1.price=150.0;

4、coutt1.name,t1.priceendl; coutt2.name,t2.priceendl; ,【例7.1】分析下面程序的结果,共用体是一种特殊的构造类型数据。一个共用体中的数据成员在内存中的存储是互相重叠的,每个数据成员都在相同的内存地址开始。分配给共用体的存储区数量是“要包含它最大的数据成员”所需的内存数。同一时刻只有一个成员可以被赋给一个值。 共用体类型的定义格式如下: union ; 其中,union是定义共用体类型的关键字,同标识符。例如: union data int i; double d; char c; ; 该共用体名为data,可以用data变量来存储int、do

5、uble或者char,条件是在不同的时间进行。,7.2 共用体(union),#include union data int i; char c; double d; d1; void main() d1.d=10.5; coutd1.dendl; d1.i=55; d1.c=f; coutd1.iendl; coutd1.cendl; coutsizeof(double),sizeof(d1),sizeof(union data)endl; cout ,【例7.2】分析下列程序的输出结果,7.3.1枚举类型的定义 枚举类型的定义格式如下: enum ; 其中,enum是定义枚举类型的关键字,

6、用标识符表示,是由若干个枚举常量组成的,每个枚举常量是一个用标识符表示的整型常量。例如: enum colorred,orange,yellow,green,blue,violet,indigo; enum color1red=9,orange=1,yellow,green,blue,violet,indigo; 语句执行之后,color1 中的red和orange都被显式地赋值了,red的值为9,orange的值为1,yellow的值是它的前一个值加1,即2,green,blue,violet和indigo的值分别为3,4,5,6.,7.3 枚举(enum),#include enum co

7、lorred,orange,yellow,green,blue,violet,indigo; void main() enum color c1,c2; c1=yellow; c2=(enum color)1; int c3=3+blue; coutc1,c2,c3endl; ,【例7.3】分析下列程序的结果,结构体指针又称为指向结构体的指针,它表示指向结构体的首地址,结构体指针的增量,是定义的结构体的数据长度。结构体指针的声明方式如下: struct * ; 例如: struct records char name20;int age; ; struct records *ptr; 此时,p

8、tr是一个指向结构体变量records的指针。 定义了结构体指针之后,结构体变量的成员可以使用结构体指针和运算符-来引用,其格式如下: - 或者 (*).成员名,7.4 结构体与指针,#include struct address char name20; int age; char *addr; ; void main() struct address info=“Chen Ming“,18,“Street BeiJing 123“,*p; coutaddr=“Street BeiJing 251“; p-age=20; coutname,(*p).age,info.addrendl; ,【

9、例7.4】分析下列程序的结果,7.5.1 结构体变量作为函数参数和返回值 结构体变量可以作为函数的参数和返回值。作为函数的实参时,可以实现函数的传值调用。当使用结构体变量作为函数的形参时,实参也应该是结构体变量名以实现传值调用,实参将拷贝副本给形参,在被调用函数中改变形参值对于调用函数中的实参没有影响。 结构体变量也可以作为函数的返回值,具有结构类型的返回值的函数,可以采用以下的返回语句: return ;,7.5 结构体与函数,复数的形式:a+bi 其中,a是实部,b是虚部。 建立描述复数的结构体类型: struct complex double r; double i; ;,【例7.5】编

10、程求两个复数的和,#include struct complex double r; double i; ;,struct complex add(struct complex x,struct complex y) struct complex z; z.r=x.r+y.r; z.i=x.i+y.i; return z; void main() struct complex z; struct add(struct complex,struct complex); struct complex x=1.2,2.5,y=2.4,5.6; z=add(x,y); cout“x+y=“z.r“+i

11、“z.iendl; ,1结构体类型指针作为函数参数 结构体类型指针作为函数参数可以实现传址调用。函数形参用结构体类型指针,函数实参应该是相同结构类型的结构变量的地址值。调用时让形参指针来调用实参的结构变量。这种调用可以在被调用函数中通过改变指针所指向的结构体变量的值来改变调用函数中的实参的值。,7.5.2 结构体类型指针作为函数参数和返回值,#include struct date int year,month,day; int judge(struct date *pd) int l_year=0; if (pd-year%4=0 ,【例7.6】 已知今天的日期,编程求出明天的日期。,voi

12、d main() struct date td,tm; int judge(struct date*),day_no(struct date *); couttd.yeartd.monthtd.day; if (td.day!=day_no( ,【例7.6】 已知今天的日期,编程求出明天的日期。,2结构体类型指针作为作为函数返回值,#include #include struct book char *name; int count; double val; b3=“Visual Foxpro“,10,29.5,“C+“,15,25.2, “Visual Basic“,13,30.6; str

13、uct book *find(struct book);,【例7.7】某图书馆有计算机书籍,每本书包含有书名、数量和单价的信息,至少存放有两种以上的书籍。编程按书名来查找某种书籍的数量。,void main() struct book *pb; pb=find(b); if (pb=0) coutnamecountname; for(int i=0;i3;i+) if(strcmp(name,b1i.name)=0) return b1+i; return 0; ,【例7.7】某图书馆有计算机书籍,每本书包含有书名、数量和单价的信息,至少存放有两种以上的书籍。编程按书名来查找某种书籍的数量。,结束,结束,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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