结构体联合体.ppt
《结构体联合体.ppt》由会员分享,可在线阅读,更多相关《结构体联合体.ppt(40页珍藏版)》请在三一办公上搜索。
1、第11章 结构体与联合体,11.1 结构体结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体-自定义数据类型结构体类型定义,struct 结构体名 类型标识符 成员名;类型标识符 成员名;.;,成员类型可以是基本型或构造型,struct是关键字,不能省略,合法标识符可省:无名结构体,例 struct student int num;char name20;char sex;int age;float score;char addr30;,结构体类型定义描述结构的组织形式,不分配内存,结构体类型定义的作用域,例 struct student int num;char name20;ch
2、ar sex;int age;float score;char addr30;struct student stu1,stu2;,11.2 结构体变量的定义先定义结构体类型,再定义结构体变量一般形式:,struct 结构体名 类型标识符 成员名;类型标识符 成员名;.;struct 结构体名 变量名表列;,例#define STUDENT struct student STUDENT int num;char name20;char sex;int age;float score;char addr30;STUDENT stu1,stu2;,定义结构体类型的同时定义结构体变量一般形式:,str
3、uct 结构体名 类型标识符 成员名;类型标识符 成员名;.变量名表列;,例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;,直接定义结构体变量一般形式:,struct 类型标识符 成员名;类型标识符 成员名;.变量名表列;,例 struct int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;,用无名结构体直接定义变量只能一次,说明结构体类型与结构体变量概念不同类型:不分配内存;
4、变量:分配内存类型:不能赋值、存取、运算;变量:可以结构体可嵌套结构体成员名与程序中变量名可相同,不会混淆结构体类型及变量的作用域与生存期,11.3 结构体变量的引用引用规则 结构体变量不能整体引用,只能引用变量成员,可以将一个结构体变量赋值给另一个结构体变量结构体嵌套时逐级引用,成员(分量)运算符优先级:1结合性:从左向右,引用方式:结构体变量名.成员名,11.4 结构体变量的初始化形式一:,struct 结构体名 类型标识符 成员名;类型标识符 成员名;.;struct 结构体名 结构体变量=初始数据;,例 struct student int num;char name20;char s
5、ex;int age;char addr30;struct student stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;,形式二:,struct 结构体名 类型标识符 成员名;类型标识符 成员名;.结构体变量=初始数据;,例 struct student int num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;,形式三:,struct 类型标识符 成员名;类型标识符 成员名;.结构体变量=初始数据;,例 struct in
6、t num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;,11.5 结构体数组结构体数组的定义三种形式:,形式一:struct student int num;char name20;char sex;int age;struct student stu2;,形式二:struct student int num;char name20;char sex;int age;stu2;,形式三:struct int num;char name20;char sex;int a
7、ge;stu2;,结构体数组初始化,例 struct int num;char name20;char sex;int age;stu=,;,顺序初始化:struct student int num;char name20;char sex;int age;struct student stu=100,“Wang Lin”,M,20,101,“Li Gang”,M,19,110,“Liu Yan”,F,19;,例 struct student int num;char name20;char sex;int age;stu=,;,结构体数组引用,引用方式:结构体数组名下标.成员名,例 统计候选
8、人选票,struct person char name20;int count;leader3=“Li”,0,“Zhang”,0,”Wang“,0;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)leaderj.count+;for(i=0;i3;i+)printf(%5s:%dn,leaderi.name,leaderi.count);,struct data int a,b,c;main()vo
9、id func(struct data);struct data arg;arg.a=27;arg.b=3;arg.c=arg.a+arg.b;printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);printf(Call Func().n);func(arg);printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);void func(struct data parm)printf(parm.a=%d parm.b=%d parm.c=%dn,parm.a,parm.b,parm.c);p
10、rintf(Process.n);parm.a=18;parm.b=5;parm.c=parm.a*parm.b;printf(parm.a=%d parm.b=%d parm.c=%dn,parm.a,parm.b,parm.c);printf(Return.n);,例 用结构体变量作函数参数,链表,C语言中,变量存储空间的分配分为静态分配和动态分配。,静态存储分配:,先在程序说明部分进行变量的说明,然后在程序编译时分配适当的存储单元。这些存储单元一经分配,在它的生存期内是固定不变的。,动态存储分配:,在程序执行期间,通过“申请”分配指定的存储空间来存储数据,当有闲置不用的存储空间时,又可以
11、随时将其释放。,ANSI C标准为动态分配系统定义了三个函数:malloc、calloc、free。,用户可以通过调用C语言的标准库函数来实现动态存储分配,从而得到或释放指定数目的内存空间。,这些函数在头文件alloc.h及stdlib.h中声明。,2.链表存储结构是一种动态数据结构,特点:,(1)它包含的数据对象的个数及其相互关系可以按需要改变.,(2)存储空间是程序根据需要在程序运行过程中向系统申请获得.,(3)不要求逻辑上相邻的元素在物理位置上也相邻.,(4)没有顺序存储结构所具有的弱点.,以上链表结构中只有一个方向的指针,因此又称为单链表,简称为链表。,一般地,用户可根据链表存放的信息
12、如存放学生信息就称为学生链表,存放职工信息就称为职工链表。,在单链表,通常称它的数据元素为结点,每个结点都是一个结构体,至少包括两个成员:存储数据元素信息的成员称为数据域;存储直接后继结点存储位置的成员称为指针域.,显然,链表结点的指针域存放的地址类型与它自身的类型是相同的。,这就是C语言中较为特殊的递归结构体或自引用结构体,这种结构体是指向自身结构体的指针。,每个链表都有一个“头指针”head,整个链表的访问必须从头指针开始进行,头指针指示链表中的第一个结点的存储位置,习惯上将“头指针”head指示的链表简称为链表head,下同。同时,由于最后一个数据元素没有直接后继结点,则链表中最后一个结
13、点的指针为“空”(NULL,即空地址)。,数据元素之间的逻辑关系是由结点中的指针指示的,逻辑上相邻的两个数据元素其存储的物理位置不要求紧邻,即链表中的数据元素在内存中不是顺序存放的,要访问其数据元素不能像数组一样按下标去查找。要找一个元素,必须先找到上一个元素,根据上一个元素的指针域才能找到下一个元素。,因此,链表的数据元素访问必须从头指针开始,逐个访问链表的每个结点,直到元素的指针域为空为止。,要使用链表,首先应定义结点的类型,再定义相应的结构体变量。例如,前面链表中结点的结构类型可以定义为:struct student char name10;struct student*next;其中,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 联合体
链接地址:https://www.31ppt.com/p-6373648.html