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