C语言程序设计 结构ppt课件.pptx
《C语言程序设计 结构ppt课件.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计 结构ppt课件.pptx(38页珍藏版)》请在三一办公上搜索。
1、第9章 结构,第9章 结构,本章主要内容1.了解结构数据类型的定义及使用。2. 了解结构数据类型的意义及作用。3. 了解结构变量与函数的关系。4. 掌握链表的作用及操作。5. 了解联合数据类型的定义及使用。6. 了解枚举类型的定义及使用。,第9章 结构,结构体数据类型:一种自定义的数据类型。 由不同数据类型的数据组合而成的数据整体。结构体中所包含的数据元素称之为成员。如:“职员”一种结构体 描述职员的信息有: 编号、姓名、年龄、性别、身份证号码、民族、文化程度、职务、住址、联系电话等。,9.1 结构体数据类型,9.1.1 结构体的定义结构类型的定义形式:struct 结构体名 成员项表列;成员
2、项表列同简单变量的定义形式相同。,例如:对“职员”数据,可以定义如下的结构体类型:struct person long no; /*职员号*/ char name12; /*姓名*/ int age; /*年龄*/ char sex; /*性别*/ long indentityNo; /*身份证号*/ char education12; /*学历*/ char addr40; /*住址*/ long telno; /*电话号码*/;,9.1 结构体数据类型,9.1.2 结构体变量的定义定义了结构体之后,就可以定义结构体变量。结构变量的定义形式。(1)类型标识符 ;例如: struct pers
3、on stu, worker; (2)在定义一个结构体类型的同时定义结构体类型变量:struct 成员项列表;,(3)直接定义结构体类型的变量: struct 成员项列表; ;,9.1 结构体数据类型,9.1.3 结构体变量的初始化(略)9.1.4 结构体变量成员的引用(1)引用结构体变量中的成员。引用格式:.例如: stu.no、 stu.age、 stu.name0等。成员名不能单独代表变量,不能直接使用结构中的成员名。若结构体类型中含有另一个结构类型,访问该成员时,应采取逐级访问的方法。(2)将结构体变量作为一个整体来使用。结构体变量可以相互赋值。 (条件是这两个变量必须具有相同的结构体
4、类型。),9.1 结构体数据类型,例1:阅读程序example9_1.c,了解结构体成员的使用方法。9.1.5 结构体变量成员的输入/输出只允许对结构变量的成员进行输入输出。不允许将结构体变量作为整体进行输入或输出操作。,9.2 结构体数组,9.2.1 结构体数组的定义结构体数组的定义:(1)先定义结构体,再定义结构体数组。struct ;struct ;(2)在定义结构体的同时,定义结构体数组。struct ;,9.2 结构体数组,(3)直接定义结构体变量而不定义结构体名。struct ;9.2.2 结构体数组成员的初始化和引用(略),9.3 结构体变量与函数,9.3.1 函数的形参与实参为
5、结构体作用:传值例2:阅读程序example9_2.c,了解结构变量作为函数参数的作用。9.3.2 函数的返回值类型为结构体新的C标准中允许函数的返回值为结构体类型的值。例3:修改例9-2所示的程序,将“输入购书信息” 模块的返回值修改成结构类型。,9.4 联合体数据类型,9.4 联合体数据类型联合体又称为共用体。联合体类型与结构体类型的同异: 相同之处:定义形式与结构体类型的定义形式相同。 不同之处: 关键字不同,共用体的关键字为union。 占用的内存单元不同。特点: 不同类型的数组项在内存中所占用的起始单元是相同的。提示: 注意联合类型变量的使用特点。,9.4 联合体数据类型,比较结构类
6、型变量和联合类型变量占用的内存情况:,结构类型:struct memb float v; int n; char c;stag;,联合类型:union memb float v; int n; char c;utag;,9.4 联合体数据类型,例4:阅读程序example9_4.c,分析和了解联合体变量成员的取值情况。例5:阅读程序example9_5.c,了解联合体类型变量的赋值情况。,9.5 枚举数据类型,枚举数据类型: 用标识符表示的整数常量的集合。枚举类型定义的一般形式: enum 标识符1,标识符2,标识符n; 枚举常量的起始值为0。例如: enum monthsJAN, FEB,
7、MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC;标识符的值被依次自动设置为整数011。可以改变标识符的取值,例如: enum monthsJAN1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC;标识符的值被依次自动设置为整数112。,9.5 枚举数据类型,几点说明:枚举类型定义中的标识符必须是唯一的。可以在枚举类型定义时为每一个枚举常量指定不同的值。也可以对中间的某个枚举常量指定不同的值。例如: enum clolorred, blue, green, yellow=5, blac
8、k, white;由于只指定了yellow的值,则枚举常量的取值情况为:red=0,blue=1,green=2,yellow=5,black=6,while=7。枚举常量的值不可更改,但可以作为整型数使用。,9.5 枚举数据类型,枚举变量的定义形式: enum 变量名1,变量名2,变量名n;例如: enum month work_day, rest_day;也可以在定义枚举类型的同时定义枚举变量。例如: enum color red, yellow, green light;枚举常量标识符是不能直接输入/输出的,要通过其他方式来输出枚举常量标识符。,9.5 枚举数据类型,例6:阅读程序exa
9、mple9_6.c,了解枚举变量的输出方式。,9.6 链表的概念,基本概念:链表指的是将若干个数据项按一定的规则连接起来的表。链表中的数据项称为结点。链表中每一个结点的数据类型都有一个自引用结构自引用结构就是结构成员中包含一个指针成员,该指针指向与自身同一个类型的结构。例如:struct node int data; struct node * nextPtr;;,9.6 链表的概念,链表是用链节指针连接在一起的结点的线性集合。其结构如图所示:自引用结构成员的变量通常是指针型的。结构成员的引用与成员的类型相关。假如有: struct node int data; struct node * n
10、extPtr;;,定义结构变量:struct node *pt;结构成员的引用:pt-data;pt-nextptr;或:(*pt).data;(*pt).nextptr;,9.6 链表的概念,链表可以组成较为复杂的数据结构。根据数据之间的相互关系,链表又可分为单链表、循环链表、双向链表等。链表的可以建立动态的数据结构,可以将不连续的内存数据连接起来。本章重点:单链表。其他链表参见“数据结构”等教程。,9.6 链表的概念,9.6.1 动态分配内存 动态分配内存空间的系统函数: malloc()和free()函数以及sizeof运算符的配合使用 (注: malloc()和free()函数在头文件
11、stdlib.h或alloc.h)。函数原型及功能如下。1函数原型:void *malloc(unsigned size) 功能:从内存分配一个大小为size个字节的内存空间。若成功,返回新分配内存的首地址;若没有足够的内存分配,则返回NULL。通常函数malice()通常和运算符sizeof一起使用。,9.6 链表的概念,例如: int * p; p=mallce(20*sizeof(int);*分配20个整型数所需的内存空间*系统分配能存放20个整型数连续空间, p指向该存储空间的首地址。例如:struct student int no; int score; struct student
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 结构ppt课件 语言程序设计 结构 ppt 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-1375813.html