08 第八章 结构体与共用体.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 结构体和共用体 第八章 结构体和共用体 涵盖教材: 第11章 结构体和共用体 引言:回顾数据类型…… 基本数据类型-描述数据所占字节、可以进行的操作等信息 int char double、float void 复合数据类型-丰富数据的刻画能力 指针、数组、字符串、结构体、枚举 共用体(union) 联合类型的概念和定义 联合类型变量的声明和使用 枚举(enum) 枚举类型的概念和定义 枚举类型变量的声明和使用 8.1 结构类型的概念、定义与使用方法 有时需要将不同类型的数据组合成一个有机的整体,以便于引用。 如:一个学生有学号/姓名/性别/年龄/地址等属性 int num; char name[20]; char sex; int age; char addr[30]; 结构类型的声明的一般形式: struct 结构类型名{ 成员列表; }; 如: 8.2 结构与指针 8.2.1定义结构体数组 和定义结构体变量的方法相仿,只需说明其为数组即可。 例如: struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; struct student stu[3]; 结构体数组可以初始化 struct student stu[2]= { {10101,″LiLin″,′M′,18,87.5,″103 BeijingRoad″}, {10102,″Zhang Fun″,′M′,19,99,″130 Shanghai Road″} }; struct student stu_1; struct student* p; p=stu_1; 成员的访问, 以下3种形式等价: 结构体变量.成员名 (*p).成员名 p-成员名 例如: stu_1.age; (*p).age; p-age; 8.3 动态数据结构:链表操作 8.3.1 链表概述 链表是一种常见的重要的数据结构,是动态地进行存储分配的一种结构。 链表的组成: 头指针:存放一个地址,该地址指向一个元素 结点:用户需要的实际数据和链接节点的指针 8.3.2 用结构体建立链表  struct student { int num;     float score;     struct student *next ; }; 其中成员num和score用来存放结点中的有用数据(用户需要用到的数据),next是指针类型的成员,它指向struct student类型数据(这就是next所在的结构体类型) 8.3.3 链表的动态操作 建立动态链表 所谓建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系 输出链表 首先要知道链表第一个结点的地址,也就是要知道head的值。然后设一个指针变量p,先指向第一个结点,输出p所指的结点,然后使p后移一个结点,再输出,直到链表的尾结点。 对链表的删除操作 从一个动态链表中删去一个结点,并不是真正从内存中把它抹掉,而是把它从链表中分离开来,只要撤销原来的链接关系即可。 对链表的插入操作 对链表的插入是指将一个结点插入到一个已有的链表中。为了能做到正确插入,必须解决两个问题: ① 怎样找到插入的位置;② 怎样实现插入。 8.3.4 处理动态链表所需的函数 库函数提供动态地开辟和释放存储单元的有关函数: malloc函数 其函数原型为void *malloc(unsigned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的值(即“返回值”)是一个指向分配域起始地址的指针(类型为void)。如果此函数未能成功地执行(例如内存空间不足),则返回空指针(NULL)。 (2) calloc函数 其函数原型为void *calloc(unsigned n,unsigned size); 其作用是在内存的动态存储区中分配n个长度为size的连续空间。函数返回一个指向分配域起始地址的指针;如果分配不成功,返回NULL。用calloc函数可以为一维数组开辟动态存 储空间,n为数组元素个数,每个元素长度为size (3) free函数 其函数原型为void free(void *p);其作用是释放由p指向的内存区,使这部分内存区能被其他变量使用。p是最近一次调用calloc或malloc函数时返回的值

文档评论(0)

187****5045 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档