p2 等于 p4  哈哈。

 

所以ppointer 的含义就是 取2次指针                                  样理解说的通。   暂时这样理解。 如有错误后面再改

ppointer(self)^ 的含义就是  取2次指针后。 再取两次内容。   这样理解说的通。   暂时这样理解。 如有错误后面再改

 

var a:tform12;
p:pointer;p2,p3,p4:pointer;
begin

a:=tform12.Create(application);
p:=@a;
pointer(p2):=pointer(p^);

pointer(p3):=pointer(pointer(a)^);
pointer(p4):=ppointer(a)^;

inputbox('','',inttohex(integer(a),8));//运行结果 a 023D46E0 a指针所指的地址 实际上是对象所在位置
inputbox('','',inttohex(integer(p),8));//运行结果 b 0018F544 p指针所指的地址 实际上是变量a所在位置

inputbox('','',inttohex(integer(tform12),8));//运行结果 c 00510548 这个是类型 所在地址。


inputbox('','',inttohex(integer(p^),8)); //运行结果 a 023D46E0
inputbox('','',inttohex(integer(p2^),8)); //运行结果 c 00510548
inputbox('3','3',inttohex(integer(p3^),8)); //运行结果 c 00510548
inputbox('4','4',inttohex(integer(p4^),8)); //运行结果 0048DE18 这个是类的数据。
inputbox('5','5',inttohex(integer(p4),8)); //运行结果 c 00510548
inputbox('6','6',inttohex(integer(p2),8)); //运行结果 a 023D46E0

inputbox('7','7',inttohex(integer(p3),8)); //运行结果 a 023D46E0