1.Delphi中@,^,#,$分别表示什么,如何用?
^: 指针 @: 取址
@:取址运算符;
var intVal:integer;
p:^integer;
new(P); //申请内存空间
intVal:=24;
p:=@intVal; //取变量 intVal 的地址赋值给 整形指针,整形指针指向intVal的地址
dispose(P);//释放内存
^:指针的引用解析操作符;
var pint:^integer;//取整形指针
new(pint); //
showmessage(inttohex(integer(@pint),8));
pint^:=$ff;
showmessage(inttohex(pint^,4));
符号 ^ 有两种用途:
1.当它出现在类型标识符之前,如 ^typeName 表示一个类型,该类型表示指向typeName类型变量的指针。
2.当它出现在指针变量之后,如pointer^ 该符号对指针解除参照,也就是说,返回存储在内存地址(该地址保存在指针中)的值指针指向的数据.
var I: Integer; PI: ^Integer;
begin
I := 10;//将10赋值给I
PI := @I;//取I的地址赋值给指针PI
PI^ := 20; //将20赋值给 PI指针指向地址里面的数据
I := PI^; //取出PI指针指向地址里面的数据 赋值给I
end;
Pint:^string;在这里将^放在数据类型之前,说明是声明的字符串指针类型,如果想取出指针引用的值的话,就将^放在声明的类型后就可以了,比如:Pint^ ;
想取Pint类型的所引用地址的话,就将@放在之前就可以了,比如:@Pint;
取指针值的方法,比如y:=p^; 就是指为Y赋值指针P里面的值(数据)
2.数值转换
#: 十进制符 $: 十六进制符
x:=$11;//$是取16进制 意思是取整数11的十六进制
edit1.text:=intToStr(x) ;//intToStr整数转换字符串 edit显示的是17
3.指针如何用
type
RTestInfo = record //定义一个结构体 成员只有一个 Age
Age:Integer;
end;
PtestInfo = ^ RtestInfo; //定义结构体指针
var
Test1,Test2:PtestInfo; //声明两个指针变量
Begin
New(Test1);//申请空间
Test1^.Age:=12;
Test2:=Test1;// 重点 这里是将Test1的地址赋值给Test2 说明 Test1和 Test2指向了同一个地址,也可以说是将Test2保存了一份Test1的起始地址
DisPose(Test2);//释放空间
End;