procedure TForm1.Button7Click(Sender: TObject);
var
  pc : PChar;
  s:String;
begin
  s:='test';
  pc := @s;
  pc := 'aaa';
  ShowMessage(s);
end;为什么结果是"test",而不是"aaa"?

解决方案 »

  1.   

    procedure TForm1.Button7Click(Sender: TObject);
    var
      pc : PChar;//---PCHAR:^CHAR;你在这里只是定义了一个指针而已.
      s:String;
    begin
      s:='test';
      pc := @s;//---你这里是使指针指向了临时变量S的地址.
      showmessage(integer(@pc));
      pc := 'aaa';//---你这种赋值,是试图给指针赋一个值,这样的操作是不正确的,事实上,DELPHI是不会改变S的地址的.
      pc^:='a';//--如果要改变S的值,可以这样.但上面的代码不能存在.此时S变成了'aest'
      showmessage(integer(@pc));//---可以看看两次显示的值有什么区别,指针地址是不变的.....
      ShowMessage(s);
    end;呵~~,自己测试吧.
      

  2.   

    showmessage(integer(@pc));----->showmessage(inttostr(integer(@pc)));  -_-!