在什么情况下用指针类型呢?(0分)

  • 主题发起人 主题发起人 awfigsk
  • 开始时间 开始时间
A

awfigsk

Unregistered / Unconfirmed
GUEST, unregistred user!
TNodeMyInfo=record
bRootNode:Boolean;
bVisitored:Boolean;
Info:HKey;
Index:Integer;
end;
PNodeInfo=^TNodeMyInfo;

procedure TForm1.ExpandSubNode(Node: TTreeNode
Info: HKEY
Index: Integer;
bRoot: Boolean);
P:PNodeInfo;
tempNode:TTreeNode;
begin
New(P);
P.bRootNode :=bRoot;
P.Info :=Info;
P.Index :=Index;
P.bVisitored :=False;
Node.Data:=P;
请问为什么要定义一个指针类型PNodeInfo?而如果直接用TNodeMyInfo这个记录类型
放到程序中也可以。在什么情况下用指针类型呢?
另外,HKEY这个是什么类型?

运行程序时出现提示:[Warning]Unit1.pas(161):Unsafe type 'Data:Pointer'
为什么会出现这个提示?.
并且我看HKEY的定义,它是在WINDOWS单元中定义的,
HKEY = type LongWord;
type Longword这种形式是什么意思?它是32位无符号整数吗?这个type起什么作用?
 
关键在于
Node.Data:=P;
Node.Data是指针类型付给他的值必须是指针。
如果你不用指针的话,那么这句就要改成
Node.Data:=@p;

再一个不要以为是用指针时P.bRootNode :=bRoot;与不使用指针一样。其实内部会变成
P^.bRootNode :=bRoot;
 
接受答案了.
 
后退
顶部