指针的问题(50分)

N

netxray

Unregistered / Unconfirmed
GUEST, unregistred user!
有些疑惑.
指针在取值时必须用^这个符号吗??
如:
type
TUserMan = packed record
UserName: string;
UserSex : string;
end;

PUserMan = ^TUserMan;
取值或赋值时必须如下吗?
var
UM: PUserMan
tmp: string;
...
UM^.UserName := 'asdfasf';//为什么我在D6里不用^这个符号也可以???
tmp := UM^.UserName;

请各位释疑.
加上^号和不加^号,取值和赋有什么不同吗???
D6下编译/运行没问题的.

 
UM只是一个指针,是不能直接用 UM.xxx 的;而UM^则是它指向的UserMan类型的内存对象,
因此可以使用UM^.xxx。
至于“D6下编译/运行没问题”——我估计是编译器自动进行了转化,如果用标准的Pascal
编译器,UM.xxx肯定是无法通过编译的。还有,如果你用with UM do,编译器就会报错,而
with UM^ do 就不会有问题。
 
如果使用指针的数值用^
 
声明的时候一定要,使用的时候可以不要是因为它被 Delphi 简化了
 
多人接受答案了。
 

Similar threads

顶部