- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 自定义数据类型 问题引出: 信息管理 一个学生的信息有学号、姓名、性别、年龄、住址、成绩等。 一本图书的信息有分类编号、书名、作者、出版社、出版日期、价格、库存量等。 如何描述这些类型不同的相关数据? C语言为我们提供了自己定义数据类型的机制,在这种机制下,数据管理将会非常方便。另外,这些自定义的数据类型还便于数据的封装与隐藏,这些都为我们写出更好的软件奠定了基础。 学习目标 课程内容 10.2结构体 1.结构体的定义与应用 结构体定义的一般形式为: struct 结构体类型名 { 数据类型 成员1; 数据类型 成员2; … 数据类型 成员N; }; 结构体的定义 1.先定义结构体类型,再定义结构体变量 几种错误的定义方法 结构体的定义 2.在声明类型的同时定义变量,如: 结构体的定义 3.直接定义结构体变量,如: 【例10.1】结构体变量的定义与使用 2.结构体数组与指针 结构体数组: 数组中每个元素都是一个结构体类型的数据。 后定义 后定义 3.结构体的嵌套与指针成员 结构体嵌套是指结构体的数据成员仍然是结构体类型。 引用:需要按照结构体成员的访问方法。 结构体的数据成员是指针类型时, 1. 指针类型的成员变量要赋值时需分配内存空间 2.如果变量的空间分配通过内存分配函数完成,最后还要释放这块内存区域。 ⑵ 动态分配存储区函数calloc( ) 函数原型: void *calloc(unsigned int n,unsigned int size); 调用格式:calloc(n,size) 功能:在内存分配一个n倍size字节的存储区。调用结果为新分配的存储区的首地址,是一个void类型指针。若分配失败,则返回NULL(即0)。 ⑶ 释放动态分配存储区函数free( ) 函数原型:void free(void *p); 4.链表 链表的基本结构 单向链表中节点的定义 链表的基本操作: 建立:根据需要一个一个地开辟新结点,在结点中存放数据并建立结点间的链接关系。 查找:根据节点的数据部分与要找的数据比较而得。 删除:将前后节点指针调整后,释放要删除节点的内存即可。 插入:根据新插入节点的数值,确定要插入的位置,调整前后节点的指针完成。 【例】建立一个学生电话簿的单向链表函数。 在链表中,如果要删除第i个结点,一般是将第(i-1)结点直接与第(i+1)个结点相连接,然后再释放第i个结点的存储单元 。 【例】删除学生电话簿链 表中指定学生的信息。 将一个新结点插入到链表中,首先要寻找插入的位置。如果要求在第i个结点前插入,可设置三个工作指针p0、p和q,p0是指向待插入结点的指针。利用p和q指针查找第i个结点,找到后再将新结点链接到链表上。 【例】在学生电话簿链表中插入一个学生的信息。要求将新的信息插入在指定学生信息之前,如果未找到指定学生,则追加在链表尾部。 10.3 共用体 共用体(Union)是将不同的数据类型组合在一起,共同占用同一段内存的用户自定义数据类型。 共用体的声明方法与结构体类似,只是将关键字struct 改为了union。 定义共用体类型变量的一般形式为 union 共用体名 10.3 共用体 共同体与结构体的异同 共同体与结构体都是由多个成员分量组成的一个整体; 共同体与结构体在定义、说明和使用(成员引用、指针)上十分相似。 结构体:多个成员分量分别占用不同的存储空间构成一个整体;成员分量之间是相互独立的,所进行的各种操作互不影响。 共同体:多个成员分量共同占用同一存储空间;成员分量之间是相互联系的,所进行的操作相互依赖。 10.4 用typedef定义数据类型 用户自定义类型 标准类型(如int、char、long、double等):系统已经定义好的数据类型,用户可以直接使用,无须再进行定义。 用户自定义类型:用户根据自己的实际要求,自己定义的新的数据类型。 除结构、共同体等类型之外,还可以用类型说明语句typedef定义新的类型说明符来代替已有的类型。 typedef语句的一般形式 typedef 已定义的类型 新的类型说明符 例如: typedef int INTEGER; typedef float REAL; typedef struct { int month; int day; int year; }DATE; 在具有上述typedef语句的程序中,下列语句就是等价的: int iValue; float rValu
文档评论(0)