- 1、本文档共155页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pascal语言教程ppt概要1
11.1.1 指针变量的定义 格式1: type 指针类型标识符= ^ 基类型标识符; var 指针变量名:指针类型标识符; 例如: type P= ^integer; var p1,p2:P; 先定义了一个指针变量P,指向整型变量。然后定义了两个类型的变量P1和P2,它们的值分别是存储单元的地址,而存储单元恰好能存放一个整型数据。 格式2: Var 指针变量名:^基类型标识符; 例:上例也可表示成: var p1,p2: ^integer; 11.1. 2 指针变量的基本操作 1、新建存储地址 格式:new(指针变量); 例如:new(p); 功能:分配一个存放数据的存储单元,并把该存储单元的地址赋给指针变量p。 注意:一个指针变量只能存放一个地址。如果程序再次执行new(p)语句,将在内存中开辟另外一个新的存储单元,并将其地址放在p中,从而丢失了原存储单元的地址。 2、释放存储单元 为了节省内存空间,系统通过标准过程dispose释放不再使用的存储单元。 格式: dispose(指针变量); 例如: dispose(p); 功能:释放指针变量p所指向的存储单元,使指针变量的值取nil(空指针值),即指针不指向任何变量。 3. 指针变量的引用 利用new过程可以将一个存储单元的地址值赋给一个指针变量,通常我们并不需要了解这个地址值,而真正关心的上该指针变量所指向的存储单元的数据。 Pascal用q^来表示指针变量q所指向的存储单元的内容。对于q和q^我们都可以用赋值语句赋值,只是效果大不相同。前者赋给的是地址值,可以改变q的指向;后者赋给的是数据内容,改变的是q所指向的存储单元的内容。 格式:(指针变量)^:=数据; 例如:q^:=2; 功能:在指针变量q所指向的存储单元中,存储的数据是2。 例:执行语句p:=q;是将q的值(q所指向存储单元的地址)赋给变量p,这样p与q都同时指向q所指向的存储单元。 例:执行语句p^:=q^;是将q所指向的存储单元的数据存放到p所指向的存储单元中。这样p和q虽然指向不同的存储单元,但两个存储单元的数据是相同的。 11.2 链表 设有一批整数(66,92,49,86,75,…),如何存放呢?当然我们可以选择学过的数组类型。但是,如果事先不能确定整数的个数,就要定义一个中够大的数组,这种做法处理问题,就会浪费内存,这就是静态存储结构的局限性。 我们利用前面介绍的指针变量可以构造一个简单而实用的动态数据结构链表。 如图所示是一个简单链表结构示意图: head 2020 1324 3360 2895 5102 2020 66 92 49 86 75 1324 3360 2895 5102 nil 在这个链表中,每个框表示链表的一个元素,称为结点。框顶端的数字表示该存储单元的地址(这里的地址是假设的)。第1个结点称为表头head,框内的数字202表示表头的地址。后面的每个结点有两个域。第一个域是数字域(存放数据),第二个域是指针域(存放下一个结点的地址)。表尾结点的指针域值为空(nil),用来表示表的结束。 指向表头的指针(head)称为头指针,当头指针head为nil时,称为空链表。 链表作表头与表尾外,每一个结点都有一个直接的前趋结点和一个后继结点。相邻结点的地址可以互不连续,它们靠指针域相互联系。 11.2.1 链表的定义 要定义一个链表,每个结点要定义成记录型,而且其中有一个域为指针。例如: type pt=^node; node=record data:integer; next:pt end; var p1,p2:pt; 说明:上面定义了两个指针变量:p1和p2,其基类型为node。 Node是一个自定义记录类型,有两个域:数
文档评论(0)