- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 结构体、共用体与枚举类型 本章要求: 理解结构体类型的概念,掌握结构体变量的定义和使用 掌握结构体数组、结构体指针的定义和使用 理解共用体的概念,掌握共用体变量的定义和使用 了解枚举数据类型及自定义数据类型的使用 理解链表的概念,初步掌握动态链表的常见操作 本章重点: 结构体变量的定义和使用 链表的概念 本章难点: 动态链表的常见操作 8.1 结构体类型与结构体变量 8.1.1 结构体概述 数组是一种简单构造类型数据,数组中的各元素是属于同一个类型的。 但在实际问题中,常会遇到这样一类数据,它由多个类型不相同的数据项组成。学生基本情况: 学号、姓名、性别、年龄、成绩 … 结构体(structure)是一种数据类型。C语言本身没有提供具体的结构体类型,但提供了说明结构体类型的方法。 8.1.2 结构体的声明 声明结构体类型的一般形式: struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }; 8.1.3 结构体变量的定义 定义好一个结构体类型后,我们可以将其看作是和int、char、float等数据类型一样的一个新的数据类型。 1.先定义结构体类型,再定义结构体变量 8.1.4 结构体变量的引用格式 引用规则: 结构体变量不能整体引用,只能引用变量成员 引用方式: 结构体变量名. 成员名 结构体嵌套 同类型结构体变量间的整体赋值,及变量的初始化 8.1.6 指向结构体的指针 指向结构体变量的指针的值是该结构体变量所分配的存储区域的首地址。 结构指针变量的定义 通过指针访问结构体变量的成员 ① 结构变量名.成员名(名字引用); ② 结构指针-成员名(指针引用); ③ (*结构指针).成员名(将指针转化为名字引用); 8.2 结构体数组 8.2.1结构体数组的定义(三种形式) 8.2.2 结构体数组的初始化 例如: struct student { int num; char name[20]; char sex; int age; }; struct student stu[ ]={{100,“He Lin”,‘M’,20}, {101,“Li Gang”,‘M’,19}, {110,“Liu Yan”,‘F’,19}}; 8.2.3 指向结构体数组的指针 8.3 结构体与函数 已知:struct student stu1,stu[10],*p=stu; 用结构体变量的成员作参数----值传递函数声明:void func(int x);函数调用:func(stu1.age); 用指向结构体指针变量或数组的指针作参数----地址传递 或 st[ ]函数声明:void func(struct student *st );函数调用:func(stu); 或 func(p); 用结构体变量作参数----多值传递(效率低)函数声明:void func(struct student z);函数调用:func(stu1); 编写: 已知5个学生的信息表,包括学号、姓名、性别、年龄。 编写函数find1,找制定学号的学生姓名。 在主函数中输入学生学号,调用find1函数查找学生信息。 编写函数find2,找制定姓名的学生信息。 在主函数中输入学生姓名,调用find2函数查找学生信息。 8.4 共用体 共用体(也叫联合体)是构造数据类型,使几个不同类型的变量共占一段内存(相互覆盖) 1.声明结构体类型的一般形式: union 共用体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }; 2.共用体变量引用(类似结构体变量) 8.5 枚举类型 枚举类型就是将变量可能出现的值放在一起而形成的一个整型常量的集合类型。限制在此集合内,变量只能取这个集合中的某个值。 1.枚举类型的定义: enum 枚举类型名 {取值表};例 enum weekdays {Sun,Mon,Tue,Wed,Thu,Fri,Sat}; 2.枚举变量的定义──与结构变量类似 (1)间接定义例如,enum weekdays workday; (2)
文档评论(0)