欢迎来到天天文库
浏览记录
ID:14660035
大小:29.00 KB
页数:4页
时间:2018-07-29
《第十三讲 指向结构体的指针与链表(c语言)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十三讲指向结构体的指针与链表 本讲首先介绍了C语言中指向结构体变量和结构体数组的指针变量的使用,接着介绍了结构体数据作为函数参数的使用,最后介绍了链表的概念和基本操作。要求大家掌握指向结构体变量的指针变量和指向结构体数组及数组元素的指针变量的定义和引用,理解指向结构体变量的指针变量、结构体变量及其成员作为函数参数的使用方法,掌握链表中结点的描述方式,了解链表的建立、输出、插入和删除操作。 知识要点·指向结构体变量的指针变量1.指向结构体变量的指针变量的定义2.利用指向结构体变量的指针变量对结构体变量成员的引用·指向结构体数组的指针变量1.指向结构体数组的指针变量的使用·结构体
2、数据作函数参数1.结构体变量的成员作函数参数2.结构体变量作函数参数3.指向结构体的指针作函数参数·链表的概念1.链表的组成2.结点用结构体类型描述3.动态申请和释放内存单元的函数·链表的操作1.建立链表2.在链表中插入结点3.删除链表中的结点§13.1指向结构体变量的指针变量 指向结构体变量的指针变量的定义形式与一般指针变量的定义形式相同,只是将其指向类型定义为结构体类型即可。例如: structperson {charname[20]; charsex; intage; fl
3、oatheight; }; structperson*p;则指针变量p,它可以指向structperson类型的结构体变量。 将一个指针变量指向一个结构体变量后,可以利用指向该结构体的的指针变量引用成员,如: (*指针变量名).成员名以上形式也常写成: 指针变量名->成员名其中,->为指向运算符,它是由符号“-”和“>”两部分构成的。指向运算符的优先级和成员运算符相同,也是最高一级。§13.2指向结构体数组的指针变量 指针变量可以指向整型、字符型、浮点型等基本类型数组。同样,指针变量也可以指向结构体类型的数组。 程序L1
4、3_2.C功能:使用指向结构体数组的指针变量。#includevoidmain(){structperson{charname[20];charsex;intage;floatheight;}per[3]={{"LiPing",'M',20,175},{"WangLing",'F',19,162.5},{"ZhaoHui",'M',20,178}};structperson*p;for(p=per;pname,p->sex,p->age,p->height);}§13.3结构体数据作函
5、数参数 不仅结构体变量的成员可以作函数参数,结构体变量以及指向结构体变量的指针都可以作函数参数。 一、结构体变量的成员作函数参数 结构体变量的成员作实参与简单变量、数组元素等作实参是一样的。 二、结构体变量作函数参数 C允许将整个结构体变量作为函数参数传递。传递的是结构体变量全部成员的值,将实参中成员的值赋给对应的形参成员。 用结构体变量作实参时,由于要为形参结构体变量分配存储空间,还要一一对应传递各成员的值,这样会增加处理的时间同时也浪费了内存空间,从而影响程序的运行效率。 三、指向结构体的指针作函数参数 使用指向结构体的指针作函数实参,形参也必须是一
6、个指向相同结构体类型的指针变量,其它使用方法不变。§13.4链表的概念 链表是动态数据结构中最基本的形式,它的规模大小可以根据需要进行动态变化,达到合理地使用存储空间。 链表有一个“头指针”变量,用来指向链表的第一个元素。链表中的每个元素都称为“结点”,结点包含两部分内容:一是实际的数据信息;二是下一结点的指针,。链表的最后一个元素置为“NULL”(空地址),标志链表结束。 一个结点可以用一个结构体类型来描述。结构体中包含若干成员,用来表示结点的数据信息。此外必须有一个成员是与结点类型一致的指针,用来指向后续结点。例如,一个链表的结点可以定义为以下的结构体类型:
7、 structnode {intdata1; floatdata2; structnode*next; };其中,成员next是指向结点的指针变量,它指向next所在的structnode结构体类型数据。C系统的库函数中提供了动态申请和释放内存存储单元的函数。 (1)malloc函数 malloc函数的原型为: void*malloc(u
此文档下载收益归作者所有