━━结构体、枚举类型.ppt
《━━结构体、枚举类型.ppt》由会员分享,可在线阅读,更多相关《━━结构体、枚举类型.ppt(31页珍藏版)》请在三一办公上搜索。
1、C+程序设计,第4章(4)结构体、枚举类型,主要内容,结构体类型的定义结构体变量的定义结构体变量的使用结构体数组结构体中的静态成员位域(选读)共同体(选读)枚举类型的定义枚举变量的定义和使用,结构体类型的定义,结构体属于构造数据类型:数组是一组相同类型数据组成的集合体;结构体是若干个不同类型数据组成的集合体。结构体弥补了数组的不足,使得一个结构体数据可以包含多种类型的数据项。一个结构体类型由若干个不同类型的成员数据项组成,用一个类型名来命名,这样就可将这些不同类型的成员数据项作为一个整体来处理。【例】描述学生的数据项有:学号、姓名、性别、成绩,可将这些不同类型的数据项 作为一个整体来处理,定义
2、一个名为 student 的数据类型,包括 id、name、sex、score 四个成员数据项,那么 student 就是一个结构体类型。struct student int id;char name 10;char sex;float score;,结构体类型的定义,结构体类型的定义:struct 结构体类型名 类型 成员名1;类型 成员名2;类型 成员名 n;/此处分号不可缺少几点说明:结构体类型名按标识符命名规则命名。注意:结构体类型是一种构造的数据类型,定义一个结构体类型,就是定义该结构体中成员的结构框架,编译系统不为任何数据类型分配存储空间,当然也不为结构体类型分配存储空间!结构体成
3、员花括号中依次列出组成该结构体类型的各个成员,并对各成员进行类型声明,成员的类型可以是C+中任意基本数据类型,也可以是已定义的构造数据类型。注意:声明成员时,不能指定其存储类型为:auto、register、extern,因为系统并不为结构体类型分配存储空间,但可以指定成员的存储类型为 static,关于结构体中 static 静态成员的作用本章后续介绍。,结构体变量的定义,结构体变量的定义:格式1:存储类型 结构体类型名 变量名1,变量名2;格式2:存储类型 struct 结构体类型名 变量名1,变量名2;几点说明:存储类型有 auto、static、register、extern 四种。当
4、存储类型省略时,对于局部结构体变量,表示auto。定义结构体变量时,系统按结构体类型中的成员框架为其分配一段连续的存储空间,依次存放各个成员的数据,所占内存的字节数为各个成员所占字节数之和。结构体变量的作用域与一般变量的作用域相同,全局结构体变量具有文件作用域,局部结构体变量具有块作用域。结构体变量的生存期也与一般变量的生存期相同,全局结构体变量、static静态局部结构体变量存放在静态区,auto局部结构体变量存放在栈区。,结构体变量的定义,定义结构体变量的方法有三种:先定义结构体类型,再定义结构体类型的变量。定义结构体类型的同时,紧跟着定义结构体类型的变量。定义无名的结构体类型,并同时定义
5、结构体类型的变量。【例】#include struct person int id;char name 10;struct date int year;int month;int day;d1;/定义结构体类型的同时,紧跟着定义其变量。struct int hour;/无名结构体类型 int minute;int second;t1,t2;/定义无名结构体类型,并同时定义其变量。person p1,p2;/先定义结构体类型,再定义结构体变量。,结构体变量的使用,结构体变量的初始化:与数组类同,在定义结构体变量时,用花括号将每一个成员的初值括起来赋给该变量。注意,花括号中列出初值其类型和顺序必须
6、与结构体类型定义中所声明的成员一一对应。【例】student s1=408001,“张小笑”,F,98;结构体变量成员的引用:(使用成员运算符“.”)结构体变量名.成员名几点说明:同类型的结构体变量之间可以相互赋值,这种赋值等同于各个成员的依次赋值。结构体变量不能直接进行输入/输出,它的每一个成员能否直接进行输入/输出,取决于其成员的类型,若是基本数据类型或字符数组,则可以直接进行输入/输出。,【例】#include#includestruct student int id;char name 10;char sex;float score;void main()student s1=4080
7、01,“张小笑”,m,98;cout s2.id s2.name s2.sex s2.score;cout“s2=”s2.id t s2.name t s2.sex t s2.score endl;s3=s2;cout“s3=”s3.id t s3.name t s3.sex t s3.score endl;s3.id=408003;strcpy(s3.name,“王嘻嘻”);cout“s3=”s3.id t s3.name t s3.sex t s3.score endl;,运行:s1=408001 张小笑 m 98请输入学号、姓名、性别(m/f)、成绩:408002 王哈哈 f 88 s2
8、=408002 王哈哈 f 88s3=408002 王哈哈 f 88 s3=408003 王嘻嘻 f 88,结构体变量的使用,结构体中成员的类型可以是C+中任意基本数据类型,也可以是已定义的构造数据类型,因此当然可以是已定义的结构体类型,当要访问嵌套在内层的结构体成员时,同样使用成员运算符“.”来实现。【例】#includestruct date int year;int month;int day;struct student int id;char name 10;char sex;date birthday;float score;void main()student s=408001,
9、“张小笑”,m,1991,5,15,98;cout s.id t s.name t s.sex t t;cout t t s.score endl;,运行:408001 张小笑 m 1991 5 15 98,结构体变量的使用,结构体变量与一般变量一样,可以作为函数的参数,同样结构体类型也可以作为函数返回值的类型。【例】#includestruct complex float real,image;/定义一个表示复数的结构体类型void swap1(complex c1,complex c2)complex t;t=c1;c1=c2;c2=t;void swap2(complex,void ma
10、in()complex c1=5,7,c2=3,2,c3;cout“c1=(”c1.real“,”c1.image“i)n”;cout“c2=(”c2.real“,”c2.image“i)nn”;swap1(c1,c2);cout“c1=(”c1.real“,”c1.image“i)n”;cout“c2=(”c2.real“,”c2.image“i)nn”;swap2(c1,c2);cout“c1=(”c1.real“,”c1.image“i)n”;cout“c2=(”c2.real“,”c2.image“i)nn”;c3=add(c1,c2);cout“c3=(”c3.real“,”c3.i
11、mage“i)n”;,运行:c1=(5,7i)c2=(3,2i)c1=(5,7i)c2=(3,2i)c1=(3,2i)c2=(5,7i)c3=(8,9i),结构体数组,结构体数组:数组是一组相同类型的元素组成的集合体,而数组元素的类型当然可以是已定义的结构体类型,这种由结构体变量组成的数组称为结构体数组。【例】(结构数组)#includestruct student int id;char name 10;char sex 4;float score;void input(student,void sort(student s,int n)int i,j;student t;for(i=0;i
12、n-1;i+)for(j=i+1;jn;j+)if(s i.score s j.score)t=s i;s i=s j;s j=t;void main()int i;student s 4;for(i=0;i4;i+)input(s i);cout“排序前:n”;for(i=0;i4;i+)output(s i);sort(s,4);cout“排序后:n”;for(i=0;i4;i+)output(s i);,【例】(有三位侯选人,输入各张选票上得票人的名字,统计出各人的得票数。)#include#includestruct person char name 10;int count;void
13、 main()int i;char name 10;person leader 3=“王哈哈”,0,“肖嘻嘻”,0,“乐咪咪”,0;cout name;while(strcmp(name,“0”)!=0)for(i=0;i name;cout“统计结果:n”;for(i=0;i3;i+)cout leader i.name“=”leader i.count“tt”;cout endl;,运行:请输入得票人姓名(输入0结束):王哈哈 肖嘻嘻 肖嘻嘻 王哈哈 肖嘻嘻 肖嘻嘻 乐咪咪 王哈哈 肖嘻嘻 王哈哈 乐咪咪 肖嘻嘻 肖嘻嘻 乐咪咪 王哈哈 肖嘻嘻 0 统计结果:王哈哈=5 肖嘻嘻=8 乐咪咪
14、=3,结构体中的静态成员,结构体中的静态成员:若将结构体类型中某个成员的存储类型定义为 static 静态成员,则对于这种结构体类型的所有变量,编译程序只为该static成员分配一个存储空间,即这种结构体类型的所有变量共享该static成员的存储空间。在结构体类型中声明static成员是属于引用性声明,必须在文件作用域的某一个地方对static成员进行一次且仅能一次的定义性声明。对结构体类型中的静态成员进行定义性声明的格式:类型 结构体类型名:静态成员名;该声明语句的作用是为该静态成员分配存储空间,可同时为其赋初值,若未赋初值,其初值为0。,指向结构体的指针,结构体的指针:在创建结构体变量时,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 枚举 类型
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6234863.html