网站大量收购独家精品文档,联系QQ:2885784924

090227指针与动态数据结构.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一章:指针和动态数据结构一、什么是指针? 先来回答,什么是地址,即内存地址?关于这一点可以追溯到第五章,过程和函数中的形式参数。(地址传递)如: procedure aaa(a:integer; var b:integer); function bbb(a:integer;var b:integer):boolean;在形式参数中,使用var所申明的参数,即变参,便是我们接下来所要特明提到的。假如在主程序中,要调用过程、函数,它是怎么做的呢?先来看,主程序中实际参数是如何与过程中的形式参数如何一一对应,进行传递的?begin (后两种是可行的,为什么?) aaa(123,123); aaa(m,123+m); aaa(123,m); aaa(m,m); end.过程函数(形式)接口参数传递实质理解:值参,可看成是过程函数内部的一个新的局部变量变参,地址传递,是要将某个变量的地址传递给能够接收保存地址的参数,即变参。变量地址,即变量的首地址 在程序变量说明中,var 部分,当我们说明了一个变量的类型时,计算机会根据我们所申明变量的大小,在计算机内部开僻出一块内存区域,如:var a:integer; b:longint; c:array[1..100]of longint;程序编译时,计算机在内存中为变量开僻出一块内存区域,其中a:integer,将开僻出2个字节大小的内在区域,而b:longint,则将开僻出4个字节大小的内存区域,c:为数组,程序将开僻出100*4共400个字节连续的内存区域。每一个字节区域,在计算机内存中都有一个地址编号,而变量a,b,c它们同样也有一个地址编号,这样地址编号是指其首地址编号,不用为此操心它们是否会混淆,因为由于之前我们所了解的,所开僻的区域均是连续的,计算机在存取数据时就可以根据不同的数据类型从首地址开始读多少个字节了,呵呵……。这个地址,像什么呢?有点像我们电脑桌面上所创建的快捷图标,大家可以看到桌面的快捷图标,非常方便,可以直接进入到某个应用程序,而当你将快捷图标删除掉的话,则对程序本身没有带来任何影响,程序并不会因此而被删除掉,桌面上的快捷图标实际上,就是用来记录下某个应用程序的位置,即地址的。因而他们大小也一样。虽说程序之间所占空间千差万别。指针从天而降!结论:地址,如果能用某个变量保存下来,这个变量就是一个地址单位,不同类型的变量尽量它们在内存中所占字节千差万别,但是其地址若保存到某个变量的话,该变量是没有差别的,再换句话说,用来保存不同变量间的地址的变量,其大小毫无疑问均一致。在此,要问一下,有没有这样的变量,有的哦,就是接下来要谈到的指针。举例:type cc=array[1..100]of longint;var p1:^integer; p2:^longint; p3:cc;begin writeln(sizeof(p1):4);writeln(sizeof(p2):4);writeln(sizeof(p3):4);end;我们可以从中看来,p1、p2、p3是指针变量,其空间大小均一样,均占用一个地址单元大小,即计算机字长大小,4个字节。指针所带的的好处有?指针是通过地址来访问变量的一种特殊的数据类型,属于动态的数据结构,它可以在需要时产生,用完后则又可以取消或回收,以减少占用的内存空间。指针变量与其他类型的变量不同,它占有的不是数据,而是地址。  由于动态数据结构的变量是在程序执行过程中动态生成的,所以不能预先予以说明,无法预先给这些变量起名字,访问时也无法通过名字直接输出或显示,而只能用指针得到其地址,然后间接访问。 1、定义指针类型  在Turbo Pascal中,指针变量用来存放某个存储单元的地址,即指针变量指向某个存储单元。一个指针变量仅能指向某一种类型的存储单元,这种数据类型是在指针类型的定义中确定的,称为指针类型的基类型。指针类型定义如下:  类型名=^基类型名;  例如:type q=^integer;   var a,b,c:q;  说明:q是一指向整型存储单元的指针类型,其中^为指针符。a,b,c均定义为指针变量,分别可以指向一个整型存储单元。  上例也可用变量说明为:    var a,b,c:^integer;  指针也可以指向有结构的存储单元。  例如:type person=record       name:string[10];       sex:(male,female);       age:20..70     end;   var pt:^person;  pt为指向记录类型person的指针变量。2、动态变量  应用一个指针指向的动态存储单元即动态变量的形式如下:

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档