Pascal基本教程 第十章
pascal吧
全部回复
仅看楼主
level 6
secondxie 楼主
Pascal基本教程 第十章指针 By 联合空间网络工作室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;  begin   p:=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. 
2007年10月26日 14点10分 1
level 6
精品的起
2008年07月04日 02点07分 2
level 5
为什么从第八章开始就完全不懂了...难道是因为米有第七章...
2008年07月31日 03点07分 3
level 0
我也是……不太懂
2008年08月04日 03点08分 4
level 1
没讲完啊~~链表的操作呢~
2008年10月30日 10点10分 5
level 0
链表在哪??
2009年05月16日 07点05分 6
level 11
挖坟。
2011年02月07日 05点02分 8
1