指针与动态变量.ppt

指针与动态变量.ppt

ID:56476461

大小:56.00 KB

页数:24页

时间:2020-06-19

指针与动态变量.ppt_第1页
指针与动态变量.ppt_第2页
指针与动态变量.ppt_第3页
指针与动态变量.ppt_第4页
指针与动态变量.ppt_第5页
资源描述:

《指针与动态变量.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、指针与动态变量引言以前所讲的简单类型的数据或构造类型的数据都是静态数据,这些类型的变量一经定义,就在内存中占有固定的存储单元,直至程序结束。指针类型的变量属于动态数据。是在程序执行时,根据程序的数据存储需要而扩充或缩减。在PASCAL中,指针变量存放某个存储单元的地址,即指针变量指向某个存储单元。指针类型说明的一般形式Type指针类型标识符=^类型标识符;说明1:指针类型标识符由用户定义,必须符合标识符命名规则;说明2:类型标识符:是除文件以外的任何数据类型。例1:typepoint1=^integer;point2=^real;解释:上

2、例定义了两个指针类型,point1是整型指针类型,point2是实型指针类型。指针类型变量的定义说明了指针类型,就可以定义该类型的指针变量。例varp1:point1;p2:point2;类型说明可以与变量定义合并在一起。例:varp1:^integer;p2:^real;注意点:指针类型说明时,可以不遵循“先说明”后“使用”的原则。例:point=^node;node=recordnum:integer;name:string;end;varstu:^point;动态变量静态变量中存放的是相应类型的数据,而指针变量中存放的是相应类型数据

3、所在的存储单元的地址。要访问指针变量所指向的数据,必须使用动态变量。动态变量不在变量说明中定义,在程序执行过程中建立。它没有标识符,而是用指针变量后跟符号^表示。如p^:=245;指针变量本身是简单类型(静态数据),它所指向的数据可以构成动态数据整型变量P某个数据指针变量P动态变量p^某个存储单元的地址某个数据动态变量的建立指针变量的值一般是通过系统分配的,建立一个动态变量(动态存储单元)必须调用标准过程NEW。New过程调用的格式:new(指针变量);New过程的作用:建立动态变量;为动态变量分配一定的存储空间,用以存放动态变量;并将动

4、态变量的存储空间的首地址存入指针变量中。例:varp:^integer;此时P的值为nil执行语句:new(p);此时P的值为一存储单元地址p^:=245;一个指针变量只能存放一个地址动态变量的撤消释放动态变量使用标准过程dispose。Dispose过程调用的格式:dispose(指针变量)Dispose过程的作用:释放指针所指向的存储单元,使指针变量的值为nil,不指向任何存储单元。例:dispose(p);动态变量的操作动态变量的引用:指针变量^例:p^:=4;i:=p^;对动态变量所能进行的操作是该类型(指针的基类型)所允许的全部

5、操作。例:varp:^integer;i:integer;New(p);i:=4:p^:=4;指针变量的操作可调用new、dispose过程。如new(p);dispose(p);具有同一基类型的指针变量之间相互赋值。例:varp1,p2,p3:^integer;New(p1);new(p2);new(p3);P1^:=5;p2:=P1;p3^:=p1^+P2^;可以给指针变量赋nil值。Nil是pascal的关键字,它表示指针的值为“空”。例:P1:=nil;可以对指针变量进行比较运算。例1:new(P1);write(p1=nil);

6、结果将输出FALSE例2:new(p1);new(p2);write(p1=p2);false指针的应用一 —— 链表结构简单链表结构示意图每个框表示链表的一个元素,称为结点框的顶部表示了该存储单元的地址(当然,这里的地址是假想的)每个结点包含两个域:一个域存放整数,称为数据域,另一个域存放下一个结点(称为该结点的后继结点,相应地,该结点为后继结点的前趋结点)的地址,称为指针域链表的第一个结点称为表头,最后一个结点称为表尾指向表头的指针head称为头指针(当head为nil时,称为空链表),在这个指针变量中存放了表头的地址在表尾结点中

7、,指针域不指向任何结点,一般放入nil。链表的基本结构链表中的每个结点至少应该包含两个域:一是数据域,一是指针域,因此,每个结点都是一个记录类型。指针的基类型也正是这个记录类型。因此,head可以这样定义:   typepointer=^rec;     rec=record       data:integer;       next:pointer;     end;   varhead:pointer;相邻结点的地址不一定是连续的。整个链表是通过指针来顺序访问的,一旦失去了一个指针值,后面的元素将全部丢失与数组结构相比,使用链表结构

8、时可根据需要采用适当的操作步骤使链表加长或缩短,而使存储分配具有一定的灵活性,这是链表结构的优点与数组结构相比,数组元素的引用比较简单,直接用“数组名[下标]”即可,因为数组元素占用连续的存储

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

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

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