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

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;

我主要想弄明白弄清原理..为什么会出错,请高人不吝赐教...谢谢...
 
F

fssky

Unregistered / Unconfirmed
GUEST, unregistred user!
本来以为是很EASY的问题,写出来后运行就是出错..真有点莫名其妙
 

深邃眼眸

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
S: Char;
P: PChar;
begin
S := '1';
P := @s;
p^ := 'a';
ShowMessage(s);
end;
 

深邃眼眸

Unregistered / Unconfirmed
GUEST, unregistred user!
下面这个是把指针类型改为String
procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
P: ^string;
begin
S := '1234';
P := @s;
p^ := 'abcd';
ShowMessage(s);
end;
 
F

fssky

Unregistered / Unconfirmed
GUEST, unregistred user!
to: 深邃眼眸
换成你那种是可以的,但我现在是想搞清楚为什么执行
p^ := 'a';
这一行时会出错,我记得以前也是这么用的,不会出错,找不到以前的代码了,现在郁闷着
 
F

fssky

Unregistered / Unconfirmed
GUEST, unregistred user!
知道怎以回事了.因为给变量赋值后指向的是一个常量地址,不允许修改.
 
F

fssky

Unregistered / Unconfirmed
GUEST, unregistred user!
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
751
import
I
I
回复
0
查看
567
import
I
I
回复
0
查看
659
import
I
顶部