下面是在delphi中使用指针的简单示例.
Type
TRecord1 = Record
field1 : String;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Rec : TRecord1;
Ptr: ^TRecord1;
begin
Rec.field1:= 'field1';
Ptr := @Rec;
memo1.Lines.Add (Ptr^.field1);
memo1.Lines.Add (Ptr.field1); // it also works.
end;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Ptr ^和Ptr都可以工作.似乎delphi是允许用户更灵活地指向值.但只是通过阅读这两行,它们在语法上是不同的,可能意味着不同.在这种情况下两者都有效.但我的问题是:
非常感谢提前.
用户如何知道在其他情况下^可以或不可以省略^,或者^或没有^意味着相同或不同?
这些情况是什么?将举例说明.
普通Pointer没有任何字段或属性,因此无视Delphi的智能,Pointer.Field语法没有意义.因此,在Pointer^.Field和之间不会发生冲突Pointer.Field,因为.如果不取消引用指针,普通语法就没有意义.
如果指针指向的类型没有任何字段,则必须使用^语法.也就是说,当指针是指向基本类型的指针时,或者是无类型指针.
为什么?(可选的)
类实例引用(大多数人称之为"对象")也是Delphi中的指针,我假设引入语法是为了使Pointers更简洁,更像是使用类.它也是无害的,因为如上所述,编译器不能错.
我个人更喜欢^.语法,因为它清楚地表明我正在使用指针而不是记录或类.
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |