




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,PPT模板下载:,C语言程序设计任务驱动式教程,第九单元结构体和文件,1,.,问题引入,首先看一个例子:新生入学登记表,要求记录每个学生的学号,姓名,性别,年龄,身份证号,家庭住址,联系方式等信息。,2,.,问题引入,我们可以用前面章节学过的数组来解决此问题,但在此问题中,因为要有很多学生的信息要处理,按照我们前面学习过的知识,但是数组是由相同类型的数据构成。所以我们可以使用7个单独的数组(学号数组no、姓名数组name、性别数组sex、年龄数组age、身份证号数组pno、家庭住址数组addr、联系方式数组tel)分别保存这几类信息。分别设立的几个数组将给数据的处理造成麻烦,但很多计算机语言只能这样处理(如:早期的FORTRAN,PASCAL,BASIC)。这时,我们可以用C语言提供的结构体数据类型来处理此问题。另外,在前面各单元进行数据处理时,无论数据量有多大,每次运行程序都须通过键盘输入,程序处理的结果也只能输出到屏幕上,如果将输入或输出的数据以磁盘文件的形式存储起来,则在进行大批量数据处理时将会十分方便。本单元通过两个任务完成复杂数据的组织和存储。,3,.,第九单元结构体和文件,任务1:存储联系人信息,任务2:实现小型通讯录,单元任务,单元小结,拓展提高,4,.,任务1:存储联系人信息结构体的应用,特别提示,工作任务,思路指导,相关知识,任务实施,5,.,工作任务,办公室主任小孙为了工作方便,计划用C语言编写一个程序,实现本部门人员联系信息的存储和输出,表9-2联系人信息表,6,.,思路指导,C语言利用结构体将同一个对象的不同类型数据,组成一个有联系的整体。也就是说可以定义一种结构体类型将属于同一个对象的不同类型的数据组合在一起。结构体是一种自定义数据类型。在本任务中,需要存储、输出多个联系人(对象)的信息,可以使用数组元素为结构体类型的数组,其中每个元素是一个联系人(对象)的相关的整体的信息。,7,.,相关知识,2几点说明:(1)结构体名:结构体类型的名称。遵循标识符命名规则。(2)结构体有若干数据成员,分别属于各自的数据类型,结构体成员名同样遵循标识符规定,名字可以与程序中其它变量或标识符同名。(3)使用结构体类型时,“struct结构体名”作为一个整体,表示名字为“结构体名”的结构体类型。(4)结构体类型的成员可以是基本数据类型,也可以是其它的已经定义的结构体类型。,8,.,相关知识,学生信息的结构体类型定义如例9-1所示。例9-1:结构类型定义示例structstudentintno;charname20;charsex;intage;charpno19;charaddr80;chartel12;;在此例中,structstudent是结构体类型名,struct是关键词,在定义和使用时均不能省略。该结构体类型由7个成员组成,分别属于不同的数据类型。,9,.,相关知识,(二)定义和初始化结构体变量1.定义结构类型变量先定义结构体类型,再定义结构体变量结构体类型定义(前面已经介绍过);结构体变量定义;其中:结构体变量定义:struct结构体类型名结构体变量名;2.在定义结构体类型的同时定义结构体变量。struct结构体名.结构成员.结构体变量名表;3.直接定义结构体变量(不给出结构体类型名匿名的结构体类型)struct.结构成员.结构体变量名表;,10,.,相关知识,2.结构体变量的初始化结构体类型的变量存储类型可分为自动型、静态和外部类型,但是没有寄存器类型的结构体类型变量,初始化形式如下:struct结构体名类型1成员1;类型2成员2;.类型n成员n;变量名=初始化数据;,11,.,相关知识,(三)结构体变量的引用结构体变量引用的基本格式为:结构体变量名.结构成员名,其中“.”运算符是结构成员引用运算符。例如:student1.num=11301;scanf(“%s”,);student1.age+;,12,.,相关知识,(四)结构体数组数组元素的类型为结构体类型的数组为结构体数组,C语言允许使用结构体数组存放一类对象的数据。类似结构体变量定义,只是将“变量名”用“数组名长度”代替,结构体数组的定义也有三种方式。1.先定义结构体类型,然后定义结构体数组:struct结构体名.;struct结构体名结构体数组名数组的长度;2.定义结构体类型同时定义结构体数组:struct结构体名.结构体数组名数组的长度;3.匿名结构体数组定义struct.结构体数组名数组的长度;定义了结构体数组后,可以采用:数组元素.成员名方式引用结构体数组中某个数组元素。,13,.,任务实施,#includevoidmain()structbirthday/*出生日期的定义*/intyear;intmonth;intday;structworker/*职工信息的定义*/charname20;charsex;structbirthdaydate;charpno19;charaddr80;chartel12;zg100;inti;,printf(“请输入职工信息:”);for(i=0;i”是指向成员运算符,很简洁,更常用),30,.,拓展提高,(三)链表(结构体指针的应用)1动态存储结构常用的内存管理函数(1)分配内存空间函数malloc()调用形式:(类型说明符*)malloc(size)功能:在内存的动态存储区中分配一块长度为size字节的连续区域。函数的返回值为该区域的首地址。(2)分配内存空间函数calloc()calloc也用于分配内存空间。调用形式:(类型说明符*)calloc(n,size)功能:在内存动态存储区中分配n块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。(类型说明符*)用于强制类型转换。calloc函数与malloc函数的区别仅在于一次可以分配n块区域。(3)释放内存空间函数free()调用形式:free(void*ptr);功能:释放ptr所指向的一块内存空间,ptr是任意类型的指针变量,它指向被释放区域的首地址。被释放区应是由malloc或calloc函数所分配的区域。,31,.,拓展提高,2链表的概念C语言的更有用且更复杂的特性就是指针的运用。使用指针可以创建复杂的数据结构,例如链表。链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它是利用指针链在一起的线性组合。链表中的每一个结点都是同一种结构类型。例如,一个存放学生学号和成绩的结点应为以下结构:structstuintnum;intscore;structstu*next;前两个成员项组成数据域,后一个成员项next构成指针域,它是一个指向stu类型结构的指针变量。,32,.,拓展提高,3链表操作链表的基本操作对链表的主要操作有以下几种:(1)建立链表;(2)结构的查找与输出;(3)插入一个结点;(4)删除一个结点;,33,.,拓展提高,(四)共用体(联合体)共用体:将不同类型的数据项存放于同一段内存单元的一种构造数据类型。与结构类似,在共用体内可以定义多种不同数据类型的成员;区别是,在共用体类型变量所有成员共用一块内存单元。(虽然每个成员都可以被赋值,但只有最后一次赋予的成员值能够保存且有意义,前面赋予的成员值被后面赋予的成员值所覆盖)1.共用体类型、共用体类型变量的定义(1)共用体类型定义的一般形式:union共用体名类型1成员1;类型2成员2;.类型n成员n;(2)共用体类型变量的定义,方法同结构体变量的定义,34,.,拓展提高,2.共用体变量的引用对共用体变量的赋值,使用都是对变量的成员进行的,共用体变量的成员表示为:共用体变量名.成员名(五)枚举类型枚举类型:只能取事先定义值的数据类型是枚举类型。1.枚举类型定义enum枚举类型名枚举元素(或:枚举常量)列表;2.枚举变量定义(类似结构体变量定义3种形式)定义枚举类型的同时定义变量:enum枚举类型名枚举常量列表枚举变量列表;先定义类型后定义变量:enum枚举类型名枚举变量列表;匿名枚举类型:enum枚举常量列表枚举变量列表;,35,.,拓展提高,(六)用typedef定义类型格式:typedef类型定义类型名;说明:typedef是定义了一个新的类型的名字,没有建立新的数据类型,它是已有类型的别名。使用类型定义,可以增加程序可读性,简化书写。,36,.,拓展提高,(七)位运算计算机内部,数据的存储、运算都是以二进制形式进行的,1个字节-8个二进制位。位运算就是针对二进制位的运算。位运算的操作对象一般是整型或字符型。位运算是C语言的低级语言特性,广泛应用于对底层硬件,外围设备的状态检测和控制。1.左移“”运算符3.按位取反“”运算符4.按位位与“文件随机读写(文件定位读写):从文件的指定位置读写数据。文件位置指针:在文件的读写过程中,文件位置指针指出了文件的当前读写位置(实际上是下一步读写位置),每次读写后,文件位置指针自动更新指向新的读写位置(实际上是下一步读写位置)。可以通过文件位置指针函数,实现文件的定位读写。文件位置指针函数有:rewind()、fseek()、ftell()三个函数。,38,.,单元小结,本单元内容丰富,首先结构体、共同体是两种新型的数据类型,它们和前面使用的基本数据类型有着显著的区别:一是结构体和共同体不是系统固有的,它需要用户自己定义;二是一个结构体或共同体数据类型由多个不同成员组成,这些成员可以具有不同的数据类型。链表是一种动态的数据存储结构,她是结构体数据类型的一个典型的应用,链表节点有数据域和指针域组成,链表的基本操作包括插入节点、删除节点、查找节点等。其次是枚举类型变量的定义与应用。第三,位运算是从C语言程序设计的一大特点,在自动控制系统应用系统非常广泛。另外,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 61300-2-5:2022+AMD1:2025 CSV EN Fibre optic interconnecting devices and passive components - Basic test and measurement procedures - Part 2-5: Tests - Torsion
- 【正版授权】 IEC 60614-2-1:1982 EN-D Specification for conduits for electrical installations. Part 2: Particular specifications for conduits. Section One: Metal conduits
- 校园食品安全知识培训
- 药学执业考试试题及答案
- 法院文职面试题及答案
- 骨科填空考试题及答案
- 海关模拟面试题及答案
- 2025年湖北省中考语文真题(含答案)
- 脑出血考试题及答案
- 保密行业考试题及答案
- 解除共管账户协议书
- 心胸外科麻醉管理
- 《鸿蒙HarmonyOS应用开发基础》课件 第1-3章 初识鸿蒙、ArkTS(上)、ArkTS(下)
- 2025年医院血透室人员培训计划
- 《消防员心理素质培养》课件
- 倍智tas人才测评系统题库及答案
- 公安机关办理行政案件程序规定课件
- 九年级全一册英语单词默写表(人教版)
- 教育培训项目的质量控制与保障措施
- 会籍顾问礼仪培训
- 中医药质量与安全管理制度
评论
0/150
提交评论