Pascal基本教程

发布 2021-04-27 07:43:28 阅读 6826

第十章指针。

10.1 指针的动态变量。

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.动态变量。

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

指针变量名^

例如:p^、q^、r^

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

p->p'

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

p^:=5;

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

i:=p^;

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

p:=nil;

其中nil是turbo pascal保留字,表示“空”,相当于c里面的null

10.2 对动态变量的操作。

在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。

例:输入两个数,要求先打印大数后打印小数的方式输出,用动态变量做。

program dongtai;

type intepter=^integer;

var p1,p2:intepter;

procedure swap(var,q1,q2:intepter);

var p:integer;

beginp:=q1;q1:=q2;q2:=p;

end;begin

new(p1);new(p2);

writeln('input 2 data: 'readln(p1^,p2^);

if p1^

writeln('output 2 data: 'p1^:4,p2^:$

end.

Pascal作业

一 读程序写结果。i,j,k,sum1,sum2 integer beginsum1 0 sum2 0 k 1 while k 10 do beginif k mod 2 0 then for i 1 to 5 do sum1 sum1 i else for j 1 to 5 do sum2 sum...

PASCAL高级语言

第一章绪论。1 1 pascal语言简介。pascal语言是当前最流行的几种程序设计语言之一,属于编译型的高级语言。欧美国家越来越多的大学将pascal作为计算机教学的第一程序设计语言,主要因为它有利于养成良好的编程习惯。pascal语言由瑞士苏黎世大学的n wirth教授设计,于1971年正式发表...

基本理论教程模拟10套

3 性别平等化。女运动员的数量逐步增多。2奥林匹克运动中的政治介入有增无减。尽管 奥林匹克宪章 明确指出,奥运会是运动员之间而非国家间比赛,但人们却把它看做国与国建的竞争,因此21世纪各国将更加重视奥运会为展示国家实力和民族凝聚力的大舞台。3奥林匹克运动将进一步融入全球化进程 4商业化趋势将面临新的...