{$R *.dfm}
{$APPTYPE CONSOLE}procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
p: ^Integer;
begin
i := 111;
j := 222;
p := @i;
inc(p); WriteLn(Integer(@i));
WriteLn(Integer(@j));
WriteLn(Integer(p));
WriteLn(p^);end;简单得不能再简单的代码了,一看就明白,以下是输出结果:
1242432
1242436
1242436
222这一切正常,可是当你去掉上面代码中的
WriteLn(Integer(@i));
WriteLn(Integer(@j));
这两句时,输出结果变成了这样:
1242444
13449308各位可以试试看看你们的Delphi会不会发神经!
Windows2000 Server下编译!
哪位大哥给个正解吧!
{$APPTYPE CONSOLE}procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
p: ^Integer;
begin
i := 111;
j := 222;
p := @i;
inc(p); WriteLn(Integer(@i));
WriteLn(Integer(@j));
WriteLn(Integer(p));
WriteLn(p^);end;简单得不能再简单的代码了,一看就明白,以下是输出结果:
1242432
1242436
1242436
222这一切正常,可是当你去掉上面代码中的
WriteLn(Integer(@i));
WriteLn(Integer(@j));
这两句时,输出结果变成了这样:
1242444
13449308各位可以试试看看你们的Delphi会不会发神经!
Windows2000 Server下编译!
哪位大哥给个正解吧!
加上这么一句就行了 ( 在Inc(p);后面 )
p:= @j;或者只注释掉 WriteLn(Integer(@i)); 留下 WriteLn(Integer(@j));
一句话,就是 将 j 变为右值;一家之言
http://community.csdn.net/Expert/topic/4198/4198753.xml?temp=.247616
--------
我居然回贴了,看来我也是无聊人 faint
var A : array[0..3] of integer;
p: ^Integer;
begin
A[0] := 111;
A[1] := 222;
p := @A[0];
inc(p); //memo1.Lines.Add(inttostr(Integer(@A[0])));
//memo1.Lines.Add(inttostr(Integer(@A[1])));
memo1.Lines.Add(inttostr(Integer(p)));
memo1.Lines.Add(inttostr(p^));end;两次都是正确的值