§9指针类型前面介绍的数据均属于静态数据类型,在Pascal语言中,提供了动态的数据类型——指针
这里的静态和动态是指程序在编译时内存的分配,静态数据在说明时,内存就为它开辟了一个空间;而动态数据类型是在使用时,边申请边开辟内存空间,而且可以回收
指针类型能处理较复杂的数据结构,能更好地利用内存,常用于描述链表、树、图等数据结构
1指针类型的定义指针不是一种标准类型,也就是说,在使用指针时,我们必须自己定义指针类型
指针类型的一般形式如下:TYPE=^;=RECORD:;……:;END;【例1】TYPEpointer=^node;{指针类型point就是一根指针指向一个结点node}node=RECORD{而结点node是一个记录}data1:integer;data2:char;link:pointer;{指针域又是指针类型point}END;{数据域}图9-1对应的结构如图9-1所示:指针结构的定义是一种递归定义,在pointer=^node中,node未曾定义过,是先使用后定义;而在其后node的定义中,又出现了pointer类型,这是递归定义
仅在指针类型定义中允许出现这种先使用后定义情况
2指针变量的说明前面仅是指针类型的定义,指针变量同样需要进行变量说明
指针变量说明的一般形式如下:var:;例如:varp,q:pointer;这很类似其他变量的说明,但指针变量说明与其它变量说明在实质上是有区别的,其他变量一旦说明,程序就会在内存开辟一个属于该变量的内存空间,而指针变量的说明没有开辟空间,只是说明了p、q标识符是一种指针类型
3指针变量的使用1.新建指针(申请空间)一般形式为:new(指针变量);例:new(p);这表示在内存开辟一个结点空间,并将指针p指向该空间
2.指针数据域赋值一般形式为:^
:=;例:p^
data1:=5;p^