第9篇 结构体.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.1 结构体 9.1.1 结构体类型的定义 9.1.2 结构体变量的说明 9.1.2 结构体变量的说明 9.1.2 结构体变量的说明 9.1.3 结构体变量的初始化 9.1.4 结构体变量的引用 9.1.4 结构体变量的引用 9.1.4 结构体变量的引用 【例9-1】输出结构体数据 9.1.5 结构体数组 9.1.5 结构体数组 9.1.5 结构体数组 9.1.5 结构体数组 9.1.5 结构体数组 9.1.5 结构体数组 【例9-2】输入3个学生的信息然后输出。每个学生的信息包括学号、姓名和4门课程的成绩 9.1.6 结构体指针 9.1.6 结构体指针 【例9-3】利用结构体指针变量输出结构体数据 2.结构体数组与结构体指针变量 【例9-4】用指向结构体变量的指针变量输出结构体数组 【例9-5】输出例中全部学生的name信息 9.1.7 结构体与函数 【例9-6】打印学号生的年龄 9.1.7 结构体与函数 2.结构体指针作为函数参数 3.返回结构体类型数据的函数 9.1.8 动态内存分配与链表 (2) 链表的概念 (2) 链表的概念 (2) 链表的概念 2.Turbo C 动态存储分配函数 2.Turbo C 动态存储分配函数 3.动态存储分配链表的基本操作 删除单向链表中的一个结点 【例9-17】编写函数,在单向链表中删除值为x的结点 在单向链表的某结点前插入一个结点 9.2 共用体 9.2.2 共用体变量的说明 3.不定义类型名直接定义共用体变量 9.2.3 共用体变量的引用 9.3 枚举类型 说 明 9.3.2 枚举变量的说明及引用 2.枚举变量的引用 2.枚举变量的引用 【例9-21】输出全部的枚举值字符串 9.3.3 枚举类型的应用 9.4 用户定义类型 举 例 举 例 3.定义新类型名的一般步骤及说明 9.5 程序举例 本章小结 本章小结 本章小结 本章小结 本章小结 1.动态内存分配和链表的概念 (1) 固定内存分配与动态内存分配的概念 ① 固定内存分配 在C语言程序中用说明语句定义的各种存储类型(自动、静态、寄存器、外部)的变量或数组,均由系统分配存储单元,程序员无法在函数的执行部分干预存储单元的分配和释放。这样的存储分配叫固定内存分配,又叫系统存储分配。 ② 动态内存分配 C语言允许程序员在函数执行部分的任何地方使用动态存储分配函数(本节2.)开辟或回收存储单元,这样的存储分配叫动态内存分配。动态内存分配使用自由、节约内存。利用动态内存分配建立的链表是一种十分重要的数据结构。 ① 结点 组成链表的基本存储单元叫结点,该存储单元存有若干数据和指针,由于存放了不同数据类型的数据,它的数据类型应该是结构体类型。在结点的结构体存储单元中,存放数据的域叫数据域,存放指针的域叫指针域,简单结点的形式如图所示。 数据域 指针域 结点类型定义的一般形式为: struct 类型名 {数据域定义; struct 类型名 * 指针域名; }; 例如有如下结点类型的定义: struct student {int num; float score; struct student *next; } ② 链表 若有一些结点,每一个结点的指针域存放下一个结点的地址,因此就指向下一个结点,这样就首尾衔接形成一个链状结构,称为链表。用上面的结构体类型建立的有4个结点的链表如图所示。 头结点:指向链表中第一个包含有用数据的结点,本身不包含有用数据,用于对链表的访问。 尾结点:不指向其他结点的结点。尾结点的指针域存放的地址为NULL(或0,或\0)。 相同点:它们均由同类型的存储单元组成。 不同点:数组由固定分配的连续的存储单元组成,定义后存储单元不可增加或减少,对数组元素的访问为随机访问。链表可由不连续的存储单元(结点)组成,结点一般为动态分配存储单元,可随时增、删。只能顺序访问链表中的结点。 链表与数组 ?③ 建立一个简单链表 c.data=15; c.next=NULL; p=head; while(p!=NULL) { printf(%d--,p-data); p=p-next; } printf(NULL\n); } 【例9-11】建立一个简单的链表并输出 struct node {int data; struct node *next; }; main() {struct node a, b, c, *head, *p; head=a; a.data=5; a.next=b; b.data=10; b.next=c; ? Turbo C动态存储分配函数有:malloc、calloc、free、realloc,这些函数的定义均包含在头文件stdl

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档