合肥
合肥奥数网

合肥站
奥数网

青少年信息学竞赛Pascal语言:指针(十)(2)

合肥奥数网整理 2012-12-27 15:13:49

  2、动态变量

    应用一个指针指向的动态存储单元即动态变量的形式如下:

      指针变量名^

    例如:p^、q^、r^

    指针变量p和它所指向的动态变量p^之间有如下关系:

    以下语句把整数5存放到p所指向的动态变量p^中去:

  p^:=5;

    以下语句把p所指向的p^中的值赋给整型变量i:

  i:=p^;

    如果指针变量p并未指向任何存储单元,则可用下列赋值语句:

  p:=nil;

    其中nil是保留字,表示“空”,相当于C语言里面的null

  3、对动态变量的操作

    在Turob Pascal程序中,动态变量不能由var直接定义而是通过调用标准过程new建立的。过程形式为:

      new(指针变量名);

    如果有下列变量定义语句:

     var p:^integer;

    仅仅说明了p是一个指向整型变量单元的指针变量,但这个整型单元并不存在,在指针变量p中还没有具体的地址值。在程序中必须通过过程调用语句:new(p);才在内存中分配了一个整型变量单元,并把这个单元的地址放在变量p中,一个指针变量只能存放一个地址。在同一时间内一个指针只能指向一个变量单元。当程序再次执行new(p)时,又在内存中新建立了一个整型变量单元,并把新单元的地址存放在p中,从而丢失了旧的变量单元的地址。

    为了节省内存空间,对于一些已经不使用的现有动态变量,应该使用标准过程dispose予以释放。过程形式为:dispose(指针变量名);为new(指针变量名)的逆过程,其作用是释放由指针变量所指向的动态变量的存储单元。例如在用了new(p)后在调用dispose(p),则指针p所指向的动态变量被撤销,内存空间还给系统,这时p的值为 nil。

  4.需要注意之处

    1、P与P^的区别

    P是指向该动态变量的指针变量名,P^则称为动态变量或标志变量。P的值是P^的首地址,P^的值为与基类型相同的一个值。

    2、定义后及时分配存储单元

    定义了一个指针变量后,并没有为该指针分配动态存储单元,此时的P的值无定义,调用P^则会产生运行错误。若想使该指针可用,可以对指针赋值,也可以通过NEW()过程分配存储单元。

    3、使用后及时收回存储单元

    指针使用后,不会自动归还占用的存储空间,应及时使用DISPOSE()过程来释放P^所占用的存储单元,以免浪费有限的存储空间.

首页 上一页 下一页 尾页

相关推荐

点击查看更多
重点初中
首页 导航