好文档 - 专业文书写作范文服务资料分享网站

广东省汕头市金山中学高中信息技术 竞赛班第二阶段培训 第九课 指针类型教案

天下 分享 时间: 加入收藏 我要投稿 点赞

§9 指 针 类 型

前面介绍的数据均属于静态数据类型,在Pascal语言中,提供了动态的数据类型——指针。这里的静态和动态是指程序在编译时内存的分配,静态数据在说明时,内存就为它开辟了一个空间;而动态数据类型是在使用时,边申请边开辟内存空间,而且可以回收。 指针类型能处理较复杂的数据结构,能更好地利用内存,常用于描述链表、树、图等数据结构。

§9.1 指针类型的定义

指针不是一种标准类型,也就是说,在使用指针时,我们必须自己定义指针类型。 指针类型的一般形式如下:

TYPE <指针类型标识符> = ^ <结点类型标识符> ; <结点类型标识符> = RECORD

<数据域标识符1> : <类型> ; ……

<指针域标识符> : <指针类型标识符> ; END ;

【例1】 TYPE pointer = ^ node; { 指针类型point就是一根指针指向一个结点node}

node = RECORD { 而结点node是一个记录 } data1 : integer;

data2 : char; {数据域}

link : pointer; {指针域 又是指针类型point } END; 对应的结构如图9-1所示:

图9-1

指针结构的定义是一种递归定义,在 pointer = ^ node中,node未曾定义过,是先使用后定义;而在其后node的定义中,又出现了pointer类型,这是递归定义。仅在指针类型定义中允许出现这种先使用后定义情况。

§9.2 指针变量的说明

前面仅是指针类型的定义,指针变量同样需要进行变量说明。 指针变量说明的一般形式如下:

var <指针变量标识符1>:<指针类型标识符>; 例如: var p , q : pointer;

这很类似其他变量的说明,但指针变量说明与其它变量说明在实质上是有区别的,其他变量一旦说明,程序就会在内存开辟一个属于该变量的内存空间,而指针变量的说明没有开辟空间,只是说明了p、q标识符是一种指针类型。

§9.3 指针变量的使用

1.新建指针(申请空间)

一般形式为: new ( 指针变量);

p 例: new(p);

这表示在内存开辟一个结点空间,并将指针p指向该空间。 ..2.指针数据域赋值

一般形式为: <指针变量> ^ . <数据域标识符> : = <数据域的值>;

p 例: p ^ . data1 := 5; p ^ . data2 := ‘a’; 5 a 3.指针赋值

一般形式为: <指针变量> : = <指针变量>;

<指针变量> ^ . <指针域标识符> : = <指针变量>;

p q 例: q:=p; {表示将q指针指向p指针所指的空间} new(p); {申请新空间,并将p指针指向该结点}

q q^.link:=p; { q的指针域指向p所指结点} 注意:指针赋值并非指针结点的赋值,而是改变指针的指向。 4.回收空间

一般形式为: dispose (<指针变量>);

例: dispose(p); {表示回收p指针所指的空间}

* 指针部分将在《数据结构》链表中详述。

p

广东省汕头市金山中学高中信息技术 竞赛班第二阶段培训 第九课 指针类型教案

§9指针类型前面介绍的数据均属于静态数据类型,在Pascal语言中,提供了动态的数据类型——指针。这里的静态和动态是指程序在编译时内存的分配,静态数据在说明时,内存就为它开辟了一个空间;而动态数据类型是在使用时,边申请边开辟内存空间,而且可以回收。指针类型能处理较复杂的数据结构,能更好地利用内存,常用于描述链表、树、图等数据结构。
推荐度:
点击下载文档文档为doc格式
4j6r6917ol2xn8u9whcj4n25q6ny0j004cp
领取福利

微信扫码领取福利

微信扫码分享