指针怪事 ( 积分: 50 )

  • 主题发起人 主题发起人 liuchong
  • 开始时间 开始时间
L

liuchong

Unregistered / Unconfirmed
GUEST, unregistred user!
var
AList:TList;
begin
ShowMessage(IntToStr(Integer(Alist)));//为0
ShowMessage(IntToStr(Integer(@Alist)));
end;


var
AList:TList;
begin
ShowMessage(IntToStr(Integer(Alist)));//不为0
//ShowMessage(IntToStr(Integer(@Alist)));
end;


第二行会影响第一行?(D7,XPSP2)
 
不会,随机耳。
 
[金华]UFO! 11:44:48
编译器的优化行为之一,估计就是对需要自己初始化的变量不在清零
[铁岭] 11:44:53
去掉优化就好了
[金华]UFO! 11:46:14
这是编译时候决定的,而不是运行时决定的,因此后面的影响前面的很正常
 
这样就为0了:
var
p: pointer;
AList:TList;
begin
p:=@AList;
ShowMessage('1 '+IntToStr(Integer(AList)));//为0
//ShowMessage('2 '+IntToStr(Integer(@p)));
end;
 
后退
顶部