procedure TForm1.Button11Click(Sender: TObject);
type
Tpstr =^Tstr;
Tstr = record
i: integer;
s: string;
end;
var
p: Tpstr;
p1: Pointer;
begin
new(p);
showmessage(inttostr(integer(@P)));
showmessage(inttostr(integer(P)));
dispose(p);end;integer(@P)和 integer(P)有什么区别。
integer函数在delphi里是怎么解释的。查资料没找到。
type
Tpstr =^Tstr;
Tstr = record
i: integer;
s: string;
end;
var
p: Tpstr;
p1: Pointer;
begin
new(p);
showmessage(inttostr(integer(@P)));
showmessage(inttostr(integer(P)));
dispose(p);end;integer(@P)和 integer(P)有什么区别。
integer函数在delphi里是怎么解释的。查资料没找到。
类似integer(P)的用法就理解为强制类型转换。
integer(@P)和 integer(P)并无本质区别, 不同的是@P和P,前者是P的指针地址,后者是P本身。
同意你的观点
如果要获取记录里面 i的实际地址值,怎么写? integer(@P^.i) 不对吧,这个得出来的值和integer(P)
差不多。
0045BFAE 8D55F8 lea edx,[ebp-$08]
0045BFB1 8D45FC lea eax,[ebp-$04]
0045BFB4 E8ABC7FAFF call IntToStr
0045BFB9 8B45F8 mov eax,[ebp-$08]
0045BFBC E8BF10FDFF call ShowMessage
Unit1.pas.39: showmessage(inttostr(integer(P)));
0045BFC1 8D55F4 lea edx,[ebp-$0c]
0045BFC4 8B45FC mov eax,[ebp-$04]
integer(@P^.i)=integer(@(P^.i))=integer(P),
integer(@P)是指针变量本身的地址,integer(P)是指针指向的地址,而integer(@P^.i)是i的地址