C语言程序设计Ch结构体共用体和枚举.pptx
《C语言程序设计Ch结构体共用体和枚举.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计Ch结构体共用体和枚举.pptx(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1p 结构体类型 数组中的各元素是属于同一类型的,但有时需要将不同类型的数据组合成一个有机的整体,并且这些数据是相互联系的,这就引出了结构体。结构体是由多种类型的数据组成的整体。组成结构体的各个分量称为结构体的数据成员(简称成员)。第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第1页/共58页2p 结构体类型 定义结构体 定义结构体的一般格式为:struct 结构体名 成员列表 变量名列表;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第2页/共58页3说明:结构体定义是以关键字struct开始的,结构体名应是有效的C+标识符。结构体中的每个成员都必须通过定义来确定成员名及
2、其类型。例如:struct student int num;/学号 char name20;/姓名 char sex;/性别 int age;/年龄 student1;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第3页/共58页4 其中,student是定义的结构体名,该结构体有四个成员变量num、name、sex、age。student1是定义的结构体变量。结构必须至少包含一个成员。也可以在结构体定义后再定义结构体变量。格式是:struct 结构体名 变量名列表;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第4页/共58页5如:struct student int n
3、um;/学号 char name20;/姓名 char sex;/性别 int age;/年龄;struct student student1;或student student1;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第5页/共58页6结构体变量的初始化 结构体变量的初始化就是在定义结构体变量的同时,为其成员提供初值,可采用以下两种方法:(1)在定义结构体类型的同时,为结构体变量初始化。struct 结构体名 成员列表 变量名=初始值列表;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第6页/共58页7如:struct student int num;/学号 cha
4、r name20;/姓名 char sex;/性别 int age;/年龄 student1=9901,wang,f,23;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第7页/共58页8(2)利用已有的结构体类型定义结构体变量,并同时初始化。格式是:结构体名称 变量名=值1,值 2,;如:student stu=1,”zhang”,M,20,90.0;此时,student1变量中的num成员的值为9901,name成员的值为wang,sex成员的值为23。第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第8页/共58页9结构体变量的引用 定义了结构体变量以后,就可以在程序中
5、使用这些变量。引用结构体变量时应注意:(1)不能将结构体变量作为一个整体来引用,只能引用结构体变量中的成员。引用结构体变量中成员的格式为:结构体变量名.成员名 如:coutstudent1.name;此处的“.”是成员运算符,它的优先级别最高。第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第9页/共58页10结构体变量的引用 (2)若结构体的成员本身又是一个结构体变量,则要使用多个成员运算符,一级一级地找到最低一级的成员进行引用。如:struct BirthTime int year;int month;int day;struct Student char num20;/学号 Bi
6、rthTime birth_day;/出生日期 stu1;stu1.birth_day.month=10;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第10页/共58页11结构体变量的引用 (3)对结构体成员变量的使用可像普通那样进行,如:进行赋值,参加运算等。如:student s1,s2;s1.num=9901;s2.num=s1.num+1;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第11页/共58页12结构体变量的引用 (4)可以将一个已有值的结构体变量的值直接赋给另外一个相同类型的结构体变量。方法是:结构体变量名1=结构体变量名2;如:student st1
7、=1,”zhang”,M,20,90.0;student st2;st2=st1;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第12页/共58页13结构体变量的引用 (5)可以引用成员的地址。也可以引用结构体变量的地址。如:&student.num&st1/Demo:/结构体类型的应用-顺序表的逆置操作.cpp 第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第13页/共58页14结构数组 结构数组:即数据类型为结构体类型的数组,这样,数组中的每个元素都属于同一种结构体类型,每一元素都分别包含了结构体中的每个成员。第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第1
8、4页/共58页15结构数组1.结构数组的定义struct student int num;char name20;int age;float score;char addr30;student stu3;或者?第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第15页/共58页16结构数组 这就定义了一个结构数组stu,它已含三个元素,其中每个元素都为student类型,且每个数组元素都各自拥有自己的一套结构成员num、name、age、score和addr。第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第16页/共58页17 2结构体数组的初始化 结构体数组在定义时也可以进行
9、初始化。其初始化方法与一般数组的初始化方法基本相同,只是必须为每个元素提供各结构成员的值,如:struct student int num;char name20;char sex;int age;student stu3=1,sum1,M,20,2,zhao2,M,25,3,qian3,M,21 ;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第17页/共58页18指向结构体类型的指针1.指向结构体变量的指针 结构体变量的指针:是指结构体变量所占内存单元的起始地址。因此,可以定义指针变量指向结构体变量。此时该指针变量的值就是结构体变量在内存中起始地址。第第7 7章章 结构体、共用体
10、和枚举结构体、共用体和枚举第18页/共58页19指向结构体类型的指针【例】指向结构体变量的指针的使用。#include iostream using namespace std;void main(void)struct student /定义结构体类型student long int num;char name20;char sex;float score;student stu1;/定义结构体类型student的变量stu1 student*p;/定义student类型的指针变量p p=&stu1;/将结构体变量stu1的地址赋给指针变量p 第第7 7章章 结构体、共用体和枚举结构体、共用
11、体和枚举第19页/共58页20stu1.num=1;/分别给结构体变量stu1的各成员赋值strcpy(stu1.name,li lin);stu1.sex=M;stu1.score=89;/输出stu1各成员的值coutstu1.numtstu1.nametstu1.sex t stu1.scoreendl;/借助指针变量p输出它所指向的结构体变量各成员的值cout(*p).numt(*p).namet(*p).sex t(*p).scoreendl;coutnumt namet sext scorenump-num。(2 2)结构体取成员的运算可以采用以下三种形式:结构体变量名.成员名 (
12、*结构体指针变量名).成员名 结构体指针变量名-成员名 第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第21页/共58页22指向结构体数组首元素的指针【例】指向结构体的指针的使用。#include using namespace std;struct student int num;char name 20;char sex;int age;student stu3=1,li lin,M,18,2,sum,M,19,3,zhao,M,20;void main(void)第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第22页/共58页23指向结构体数组首元素的指针 stude
13、nt*p;for(p=stu;pstu+3;p+)coutnumtnametsex tageendl;程序的输出结果为:1 li linM 182 sum M 193 zhao M 20 第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第23页/共58页24指向结构体数组首元素的指针说明:把stustu赋给指针变量p p,就表示p p指向了该数组的首元素(p p的值为数组的起始地址)。p+p+表示p p指向数组的下一个元素,利用这种方法可以访问数组中所有元素的值。/DemoDemo:结构数组的应用例子 /结构数组的应用举例-排序.cpp.cpp 第第7 7章章 结构体、共用体和枚举结构
14、体、共用体和枚举第24页/共58页25用结构体类型作为函数的参数1 1用结构体类型的变量作函数的参数(传值)在C+C+语言中,允许把结构体类型的变量直接作为函数的参数,但要注意:此时主调函数的调用点上的实参与被调函数相应位置上的形参必须是相同的结构体类型,是将实参的值(各成员的值)传递给相应的形参。第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第25页/共58页26用结构体类型作为函数的参数【例例】用结构体类型的变量作为函数的参数。用结构体类型的变量作为函数的参数。#include iostream“using namespace std;struct student int num
15、;char name 20;char sex;int age;void print(student s)couts.numts.namets.sext“s.agetendl;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第26页/共58页27 student stu3=1,li lin,M,18,2,sum,M,19,3,zhao,M,20;void main(void)int i;for(i=0;i3;i+)print(stui);程序的执行结果是:程序的执行结果是:1 li lin M 182 sum M 193 zhao M 20 第第7 7章章 结构体、共用体和枚举结构体、共
16、用体和枚举第27页/共58页28 可见,当把一个结构体类型的变量作为函数的参数时,可以将该变量的值(包含结构体类型中各成员的值)传递给被调函数的形参。用指向结构体的指针作函数的参数(传指针)用指向结构体变量的指针作参数。这种方式同指针作为函数的参数的原理一致,传递的是结构体变量的地址(指针)。第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第28页/共58页29【例例】用指针的方法实现上例程序的功能。用指针的方法实现上例程序的功能。#include iostream“using namespace std;struct student int num;char name 20;char
17、 sex;int age;void print(student*);student stu3=1,li lin,M,18,2,sum,M,19,3,zhao,M,20;void main(void)int i;for(i=0;i3;i+)print(&stui);void print(student*s)coutnumtname tsext“agetendl;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第29页/共58页30用结构体变量的引用作为函数的参数 此时,被调函数的形参必须声明成引用形式,函数的形参作为实参的一个别名来使用,从而达到对实参操作的目的。【例例】用结构体变量引用
18、的方法实现例用结构体变量引用的方法实现例2-28程序的功能。程序的功能。#include iostreamusing namespace std;struct student int num;char name 20;char sex;int age;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第30页/共58页31void print(student&);student stu3=1,li lin,M,18,2,sum,M,19,3,zhao,M,20;void main(void)int i;for(i=0;i3;i+)print(stui);void print(studen
19、t&s)couts.numts.namets.sex ts.agetendl;第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第31页/共58页32返回结构体类型的函数返回结构体类型的函数1返回结构类型值的函数的定义返回结构类型值的函数的定义其定义格式如下:其定义格式如下:结构体名称 函数名(形参及类型说明)函数体 【例】定义一个返回结构体类型的函数,求所有同学中年龄最大的同学。第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第32页/共58页33#include iostreamusing namespace std;struct student int num;char n
20、ame 20;char sex;int age;student max(student*,int);student stu3=1,lilin,M,18,2,sum,M,19,3,zhao,M,20;void main(void)student maxold=max(stu,3);coutmaxold.numtmaxold.name t“maxold.ageage;index=0;for(i=0;in;i+)if(age1age)index=i;age1=(s+i)-age;return(*(s+index);第第7 7章章 结构体、共用体和枚举结构体、共用体和枚举第34页/共58页35返回结构
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 Ch 结构 共用 枚举
限制150内