请问以下代码为什么会出错?应该怎样修改?(100分)

  • 主题发起人 主题发起人 fssky
  • 开始时间 开始时间
F

fssky

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
P: PChar;
begin
S := '1234';
P := PChar(S);
P^ := 'a';   // 执行这句出错
ShowMessage(S); // 应该是a234
end;

我主要想弄明白弄清原理..为什么会出错,请高人不吝赐教...谢谢...
 
本来以为是很EASY的问题,写出来后运行就是出错..真有点莫名其妙
 
procedure TForm1.Button1Click(Sender: TObject);
var
S: Char;
P: PChar;
begin
S := '1';
P := @s;
p^ := 'a';
ShowMessage(s);
end;
 
下面这个是把指针类型改为String
procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
P: ^string;
begin
S := '1234';
P := @s;
p^ := 'abcd';
ShowMessage(s);
end;
 
to: 深邃眼眸
换成你那种是可以的,但我现在是想搞清楚为什么执行
p^ := 'a';
这一行时会出错,我记得以前也是这么用的,不会出错,找不到以前的代码了,现在郁闷着
 
知道怎以回事了.因为给变量赋值后指向的是一个常量地址,不允许修改.
 
接受答案了.
 
后退
顶部