pascal第8章 指针与链表.ppt

pascal第8章 指针与链表.ppt

ID:48805923

大小:175.50 KB

页数:29页

时间:2020-01-26

pascal第8章  指针与链表.ppt_第1页
pascal第8章  指针与链表.ppt_第2页
pascal第8章  指针与链表.ppt_第3页
pascal第8章  指针与链表.ppt_第4页
pascal第8章  指针与链表.ppt_第5页
资源描述:

《pascal第8章 指针与链表.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第八章 指针与链表前面介绍的各种简单类型的数据和构造类型的数据属于静态数据。在程序中,这些类型的变量一经说明,就在内存中占有固定的存储单元,直到该程序结束。程序设计中,使用静态数据结构可以解决不少实际问题,但也有不便之处。如建立一个大小未定的姓名表,随时要在姓名表中插入或删除一个或几个数据。而用新的数据类型──指针类型。通过指针变量,可以在程序的执行过程中动态地建立变量,它的个数不再受限制,可方便高效地增加或删除若干数据,这比修改一个记录数组更加方便。指针的定义及操作(1)指针类型和指针变量在Pascal中,指针变量(也称动态变量)存放某个存储单元的地址;也就是说,指针变量指示某个存

2、储单元。指针类型的格式为:^基类型说明:①一个指针只能指示某一种类型数据的存储单元,这种数据类型就是指针的基类型。基类型可以是除指针、文件外的所有类型。例如,下列说明:typepointer=^integer;varp1,p2:pointer;定义了两个指针变量p1和p2,这两个指针可以指示一个整型存储单元(即p1、p2中存放的是某存储单元的地址,而该存储单元恰好能存放一个整型数据)。②和其它类型变量一样,也可以在var区直接定义指针型变量。例如:vara:^real;b:^boolean;又如:typeperson=recordname:string[20];sex:(maLe,f

3、emaLe);age:1..100end;varpoint:^person;③Pascal规定所有类型都必须先定义后使用,但只有在定义指针类型时可以例外,如下列定义是合法的:typepointer=^rec;//允许rec类型后定义rec=recorda:integer;b:charend;(2)开辟和释放动态存储单元①开辟动态存储单元在Pascal中,指针变量的值一般是通过系统分配的,开辟一个动态存储单元必须调用标准过程new。new过程调用的一般格式:new(指针变量)功能:开辟一个存储单元,此单元能存放的数据的类型正好是指针的基类型,并把此存储单元的地址赋给指针变量。说明:1)

4、这实际上是给指针变量赋初值的基本方法。例如,设有说明:varp:^integer;这只定义了P是一个指示整型存储单元的指针变量,但这个单元尚未开辟,或者说P中尚未有值(某存储单元的首地址)。当程序中执行了语句new(p)才给p赋值,即在内存中开辟(分配)一个整型变量存储单元,并把此单元的地址放在变量p中。示意如下图:??XXXX?PPP(a)编译时给P分配空间,?表示值不定(b)执行new(p)后生成新单元,新单元地址为XXXX(c)(b)的简略表示2)一个指针变量只能存放一个地址。如再一次执行New(p)语句,将在内存中开辟另外一个新的整型变量存储单元,并把此新单元的地址放在p中,

5、从而丢失了原存储单元的地址。3)当不再使用p当前所指的存储单元时,可以通过标准过程Dispose释放该存储单元。②释放动态存储单元dispose语句的一般格式:dispose(指针变量)功能:释放指针所指向的存储单元,使指针变量的值无定义。例如:new(p);dispose(p);(3)动态存储单元的引用在给一个指针变量赋以某存储单元的地址后,就可以使用这个存储单元。引用动态存储单元一般格式:<指针变量>^说明:①在用New过程给指针变量开辟了一个它所指向的存储单元后,要使用此存储单元的唯一方法是利用该指针。②对动态存储单元所能进行的操作是该类型(指针的基类型)所允许的全部操作。例8

6、.1设有下列说明:Varp:^integer;i:integer;画出执行下列操作后的内存示意图:New(p);P^:=4;i:=p^;【分析】如下图所示。????4?44iiiippppP^(a)编译时分配存储单元(b)执行new语句(c)执行p^:=4(d)执行i:=p^(4)对指针变量的操作前已述及,对指针所指向的变量(如P^)可以进行指针的基类型所允许的全部操作。对指针变量本身,除可用New、Dispose过程外,尚允许下列操作:①具有同一基类型的指针变量之间相互赋值例8.2设有下列说明与程序段:varp1,p2,p3:^integer;beginnew(p1);new(p2

7、);new(p3);p1:=p2;//同一基类型的指针变量之间可以相互赋值p2:=p3;end;②可以给指针变量赋nil值nil是Pascal的关键字,它表示指针的值为"空"。例如,执行:p1:=ni1后,p1的值是有定义的,但p1不指向任何存储单元。③可以对指针变量进行相等或不相等的比较运算在实际应用中,通常可以在指针变量之间,或指针变量与nil之间进行相等(=)或不相等(<>)的比较,比较的结果为布尔值。例8.3输入两个整数,按从小到大打印出来。【分析

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。