指针类型的变量用于存储其他变量或指针的地址。定义语法为:
type
pansiStr = ^ansistring;
var
ansistr:pansistr;
或者
var
ansistr:^ansistring;
指针的赋值:
赋值有两种方式:将一个指针的值直接赋值给另一个指针 或者 将一个变量的地址赋值给一个指针
例如:
var
ansistr1,ansistr2:^ansistirng;
s:ansistring;
......
s:='abc';
ansistr1 := @s;
ansistr2 := ansistr1;
指针通过 ^ 符号来读取其存储地址中的内容。
例如:
writeln(ansistr1^); 将显示出 abc
无类型指针:
delphi中存在一种特殊的指针类型---Pointer,此指针结构的类型码不为任何值,故称为无类型指针。
无类型指针再不进行类型转换前,只支持两种操作:
1. 将另一个指针或地址值赋值给Pointer指针
2. 将pointer指针赋值给另一个指针
由于类型码为空,所以使用时不能直接通过p^的形式读写p所指向的变量的值,须利用类型转换将pointer指针转换为其他类型的指针
动态指针:
指针有两种:静态指针及动态指针
静态指针声明时即可确定其所指向的变量需多少内存。
动态指针指向某一块没有分配名称的内存。动态指针在使用前需用户手动给他分配内存。
delphi提供若干对用于分配及销毁动态指针的标准例程。
常用的有两组:
1. procedure New(var x:Pointer);
procedure Dispose(var p:pointer);
2. procedure GetMem(var p:Pointer; size: Integer);
procedure FreeMem(var p:Pointer);