指针(非C语言)pascal课件.ppt

指针(非C语言)pascal课件.ppt

ID:57000159

大小:149.00 KB

页数:27页

时间:2020-07-26

指针(非C语言)pascal课件.ppt_第1页
指针(非C语言)pascal课件.ppt_第2页
指针(非C语言)pascal课件.ppt_第3页
指针(非C语言)pascal课件.ppt_第4页
指针(非C语言)pascal课件.ppt_第5页
资源描述:

《指针(非C语言)pascal课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、指针静态存储与动态存储我们知道使用变量前必须首先在变量说明部分对变量进行定义。变量一经定义,编译时系统就会给这些变量分配相应的内存空间。这种分配称为静态存储分配,各变量相应的内容空间在程序运行前就已经确定。在实际应用中,经常遇到事先无法确定有多少数据要存储的情况,此时就不能用静态存储。为此,pascal引入了动态存储分配机制。所谓动态存储分配是指事先不确定数据存储,在程序运行过程中根据实际需要动态申请所需存储空间,用完后及时将存储空间归还给系统。内存中的每一个存储单元都有一个编号,也就是“地址”。存储单元中存放的是各种类型的数据,也

2、就是存储单元的“内容”。一个存储单元的“内容”的写入或读出,是根据存储单元的“地址”进行。在计算机中,“地址”实际上是一个特殊的整数,因此“地址”可以看成是一种特殊的“内容”,可以存储到另一个存储单元中。这样两个存储单元之间就建立了一种联系。下图,变量a是一个存储地址的变量,其自身的地址是2000;变量b是一个存储整数的变量,其地址是2020;可以将2020存储到a中,从而a和b建立了关系。同时,2020相对于a而言是“内容”,相对b而言则是“地址”。为了清楚表达a和b的关系,左图用右图代替,即在a中不再给出b的具体“地址”,而是从

3、a的内部画一个箭头指向b,该箭头像一根针,所以称为指针。2020565620002020ab20002020ab56指针实际上是“地址”,相应地,存储指针的变量称为指针变量,指针箭头所指存储变量存储的数据的类型称为指针变量的基类型。相对静态存储分配,动态存储分配有两个特点:⑴可以在运行时根据需要随用随要;⑵每次所申请的存储单元在内存中可以不连续,通过指针相互建立联系。指针变量及基本使用指针变量定义为了表示指针变量和它所指向的变量之间的联系,在pascal语言中使用了“∧”表示指向。有两种说明方法:方法一:首先进行指针类型标示符的定义

4、,其次是进行指针变量的定义。Type指针类型标示符=∧基类型标示符;这里的基类型可以是我们所学的除文件类型以外的任何数据类型。Pascal规定,指针类型的定义应写在前面,指针所指向的基类型的类型定义应放在后面。指针变量的定义形式如下:Var指针变量名:指针类型标示符;如:Typepoint=∧integer;Varp1,p2:point;说明:point是指针类型标示符,经定义后,程序中就出现了一个名字叫point的数据类型,该类型的变量用于其存储整数类型变量的地址,也即该类型变量的内容是一个指针,指向一个整型变量。P1,p2是po

5、int类型的变量,它们的值都是某个存储单元的地址,该地址中可以存储整型数据。方法二:可以再var区中直接定义,即:Var指针变量名:∧基类型标示符;因此,上表的说明也可以写为:Varp1,p2:∧integer;总之,指针是用来实现动态存储分配的数据类型。指针变量的值是内存中某一个存储单元的地址,该地址单元中的值类型是指针变量的基类型。指针变量的基类型可以是除文件类型以外的其它数据类型。定义指针变量的方法有两种,要分清指针类型标示符和指针变量名。指针变量本身是静态分配的,只说明它可以存储一个地址,但在程序运行前,其应该存储哪一个地址

6、并没有确定,必须等到程序运行时根据申请到的地址来填写。从而实现动态的数据组织要求。指针变量的基本使用方法由于指针变量的内容(一个存储单元地址)是动态赋值的,我们事先不知道确切的地址,所以我们必须在需要时向系统提出申请,由系统给我们分配一个存储单元,然后获得该存储单元的确切地址,并将其填写到指针变量中。当不再需要某一存储单元时,就必须将该存储单元空间还给系统,我们称之为释放。Pascal语言中规定了两个标准过程来实现存储单元空间的申请和释放。1.申请存储单元的过程:new(指针变量);new(h);说明:系统将自动分配一个存放数据的存

7、储单元,将该单元的地址赋给指针变量h。存储单元的大小由h的基类型决定。h在变量的说明部分指针变量的值未确定h2001?2001申请存储单元后系统自动将某一地址分配给变量h,而h所指向的单元值需通过输入或赋值语句确定new(h);h∧:=123;new(h);h∧:=234;(实现过程如下所示)……30103011…4010401140134012……30103011…4010401140134012123……30103011…4010401140134012123……30103011…4010401140134012……234301

8、03011…4010401140134012程序未执行前的情况第一条语句执行后h3011第二条语句执行后h3011h4013第三条语句执行后h4013第四条语句执行后由上可知,对同一个指针变量h可以调用若干次new过程,但每一次调用对

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

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

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