第10章+结构体、共用体和枚举类型.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Num Name Score 1 Wang 90.0 2 Qian 89.5 3 Sun 85.0 在上面的例子中,指针变量p的起始值是stu[0]的地址,即p指向stu[0]。在第一次进入循环后,通过p输出stu[0]各成员的值;执行p++后,p中的地址变为stu[1]的地址,即此时,p指向stu[1],再次进入循环。这样,就可以输出每个数组元素各成员的值了。 10.4.3 指向结构体数据的指针作函数参数 在函数之间传递结构体类型的数据,有两种方法: (1) 直接传结构体变量。此时,被调函数的形参定义为结构体变量,主调函数中用结构体变量作为实参。这种传递方法在空间上的开销较大。此外,如果在被调函数中改变了形参,这种改变也不能返回主调函数,造成使用上的不便,因此一般很少使用这种方法。 (2) 传结构体变量的地址。此时,被调函数的形参定义为指向结构体数据的指针变量,主调函数中用结构体变量的地址作为实参,这种方法比较常用。 【例10.4】 指向结构体数据的指针作函数参数。 #include stdio.h struct stdtp { int num; char name[10]; float score; }; void output (struct stdtp *p) { printf(%d\t%s\t%5.1f\n, p-num, p-name, p-score); } main() { struct stdtp stu[3]={{1,Zhao,90.0},{2,Qian,89.5},{3,Sun,85.0}}; int i; printf(No\tName\tScore\n); for(i=0; i3; i++) output(stu[i]); } 程序的运行结果: No Name Score 1 Zhao 90.0 2 Qian 89.5 3 Sun 85.0 ? 10.5 单 链 表 10.5.1 概述 链表是一种常见的、重要的数据结构。它是动态地进行存储分配的一种结构。单链表是最简单的一种链表,如图10-3所示。一个单链表由若干个结构相同的“结点”和一个“头指针”变量组成。图中,head表示单链表的头指针变量,它存放单链表第一个结点的地址。 单链表的每个结点包含两部分:数据域和指针域。数据域用来存放用户需要用的实际数据,而指针域用来存放下一个结点的地址,最后一个结点的指针域存放空地址(用NULL表示)。这样,头指针head指向第一个结点,第一个结点又指向第二个结点……直到最后一个结点。 图10-3 单链表 单链表和数组的作用类似,都可以用来存储多个相同类型的数据,但是也有区别,主要有以下几点: (1) 数组元素的存储空间是在程序运行之前分配的,即所谓“静态分配”,而单链表结点的存储空间是在程序运行过程中分配的,即“动态分配”; (2) 数组元素在内存中是连续存放的,而单链表的结点在内存中通常是不连续的,结点之间通过指针域形成逻辑上的先后次序; (3) 数组元素可以通过下标随机访问,而单链表的结点只能从前到后顺序访问。 相对于数组,单链表的优点表现在: (1) 节省存储空间,单链表的结点是动态分配的,需要的时候为它分配存储空间,不需要的时候释放存储空间,提高了内存空间的使用效率; (2) 便于插入和删除,在插入和删除结点的时候,只需要改变相应结点的指向关系,而在数组中插入/删除元素时,需要作大量的移动操作。 单链表的结点可以用结构体类型来描述,如图10-4所示的单链表,其中的每个结点中存放一个学生的学号、姓名和成绩。这个单链表的结点可以用结构体类型描述为 struct nodetp { int num; char name[10]; float score; struct nodetp *next; }; 结构体类型struct nodetp有四个成员,其中,num、name、score可以用来表示学号、姓名和成绩,而next成员的类型是struct nodetp类型数

文档评论(0)

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

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

1亿VIP精品文档

相关文档