第7章结构体、共用体和枚举类型.ppt
《第7章结构体、共用体和枚举类型.ppt》由会员分享,可在线阅读,更多相关《第7章结构体、共用体和枚举类型.ppt(46页珍藏版)》请在三一办公上搜索。
1、2023/8/5,1,第7章 结构体、共用体和枚举类型,7.1 结构体类型 7.2 结构体数组 7.3 结构体指针变量 7.4 链表 7.5 共用体 7.6 枚举类型,2023/8/5,2,6.1 结构体类型,概述有时,需将不同类型的数据组合成一个有机的整体,以便于引用。这些数据是相互联系的。如一个学生的有关信息:,可采用结构体数据结构描述上述信息。,2023/8/5,3,结构体类型的定义,示例:struct student int num;char name20;char sex;int age;char addr30;;,定义一个结构体类型的一般形式为:,struct 结构体名 成员表列;
2、,对各成员都要进行类型说明;成员名定名规则与变量名同。,是类型,不是变量名,2023/8/5,4,结构体类型的定义,结构体类型定义的一般形式struct 结构名 数据类型 成员名 1;数据类型 成员名 2;数据类型 成员名 n;;,struct medicinechar code;/*药品代号*/char name;/*药品名称*/float price;/*单价*/char place;/*产地*/stuct goods caption;/*来源地*/;,2023/8/5,5,结构体类型变量的定义,1、在定义类型的同时定义变量struct studentint num;char name20
3、;char sex;int age;char addr30;student1,student2;,一般形式是:struct 结构体名 成员表列 变量名表列;,2023/8/5,6,结构体类型变量的定义,2、先定义结构体类型再定义变量名struct studentint num;char name20;char sex;int age;char addr30;struct student student1,student2;,定义student1和student2为struct student类型变量,struct不可省略,不能只指定一个变量为“struct型”而不指定结构体名,2023/8/5
4、,7,结构体类型变量的定义,3、直接定义结构类型变量(无名定义)struct int num;char name20;char sex;int age;char addr30;student1,student2;,省略了结构体类型名,以后不能再用这种结构体类型定义其它变量,2023/8/5,8,结构体变量的存储,一个结构体变量所占用内存空间的字节数可以用sizeof运算符求出,它的一般形式为:sizeof(变量名或类型标识符)例struct test int m110;char m2;float m3;double m4;aa;,sizeof(struct test)=4*10+1+4+8=5
5、3,2023/8/5,9,几点说明:,1.类型与变量是不同概念,不要混淆;2.结构体中的成员,可以单独使用,其作用与地位相当于普通变量;3.成员也可以是一个结构体变量;例如:,struct date int month;int day;int year;,struct studentint num;char name20;int age;struct date birthday;student1,student2;,4.成员名可以与程序中的变量名相同,二者不代表同一对象。,2023/8/5,10,结构体变量的初始化,语法形式 struct 结构体类型名 结构体变量名=初始数据示例 struct
6、 student/学生信息结构体 int num;/学号 char name20;/姓名 char sex;/性别 int age;/年龄 stu=97001,Lin Lin,F,19;,注意:不能在结构体内直接赋值,2023/8/5,11,结构体变量的初始化,含嵌套结构的结构体变量初始化,struct date int month;int day;int year;,Struct studentint num;char name20;int age;struct date birthday;,struct student st1=10001,Lin Lin,21,8,15,1990;stru
7、ct student st2=10002,Li Lin,20,6,12,1991;,2023/8/5,12,结构体变量的成员的访问,语法形式:结构体变量名.成员名说明对成员变量可以象普通变量一样进行赋值或存取以及各种运算,如:st1.num=10015;scanf(%d,若成员本身又属一个结构体类型,只能对最低级的成员进行赋值或存取以及运算。如:st1.birthday.year,2023/8/5,13,结构体变量的成员的访问(续),两个结构体变量之间可以进行整体赋值。但对结构体变量进行输入和输出时,只能是针对每一个成员来进行。struct student st3;st3=st1;printf
8、(%d,st3);/错误,2023/8/5,14,例7-2 结构体变量初始化(p175),#includestruct long no;char name20;char sex;int age;char addr30;stu1=11301,Wang Lin,M,19,200 Beijing Road;int main()printf(no=%ld,name=%s,sex=%c,age=%d,addr=%sn,stu1.no,stu1.name,stu1.sex,stu1.age,stu1.addr);,2023/8/5,15,例7-3 结构体变量赋值,#include#include stru
9、ct long no;char name20;char sex;STUDENT;int main()STUDENT.no=11201;strcpy(STUDENT.name,Li Ping);STUDENT.sex=M;printf(no=%ld,name=%s,sex=%cn,STUDENT.no,STUDENT.name,STUDENT.sex);,2023/8/5,16,7.2 结构体数组,1.结构体数组的定义struct student int num;char name20;double score;stu15;struct student stu25;,2023/8/5,17,结构
10、体数组,2.访问结构体数组元素的成员 例:stu10.num3.结构体数组的初始化 struct student int num;char name20;double score;stu12=1001,”wangliping”,85.5,1002,”zhangli”,78;,2023/8/5,18,示例:设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。,struct person char name20;int count;leader3=Li,0,Zhang,0,Liu,0;int main()int i,j;char leader_name20;for(i=1;i
11、=10;i+)scanf(%s,leader_name);for(j=0;j3;j+)if(strcmp(leader_name,leaderj.name)=0)leaderj.count+;for(i=0;i3;i+)printf(%s,%dn,leaderi.name,leaderi.count);,2023/8/5,19,7.3 结构体指针变量,指向结构体变量的指针变量结构体指针变量的定义及初始化struct 结构体类型名*指针变量名;例:struct student*s;注意:此时s还未具体确定指向哪个结构体变量,需要在程序中把结构体变量的地址赋给s;或者在定义s时初始化例:stude
12、nt stu;struct student*s=,2023/8/5,20,结构体指针,访问结构体变量中的成员有三种方式结构体变量.成员名(*结构体指针).成员名 结构体指针-成员名指向结构体数组的指针变量与指向普通数组的指针变量的定义和使用方法完全一样,指向运算符。其优先级高于自增、自减运算符,2023/8/5,21,指向运算符示例,试分析以下运算:p-n 得到p指向的结构体变量中的成员n的值p-n+得到p指向的结构体变量中的成员n的值,用完后使它加1;+p-n 得到p指向的结构体变量中的成员n的值 使其先加1,2023/8/5,22,例7-7 用指向结构体数组的指针输出结构体数组中各成员的值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 共用 枚举 类型
链接地址:https://www.31ppt.com/p-5644321.html