delphi中pchar和^char的区别
在delphi中一直以为pchar和^char没有太大区别但使用总是糊涂的,进行测试,不管方法对不对,但发现测试结果他们是有区别的,能通过例子详细解释么?varc:str...
在delphi中 一直以为pchar 和 ^char没有太大区别 但使用总是糊涂的,进行测试,不管方法对不对,但发现测试结果他们是有区别的,能通过例子详细解释么?var c :string; d :pchar; e :^char; f :pchar; g :Pchar; h :^char; i:integer; begin setlength(c,10); for i:= 1 to 2 do begin c[i] := 'a'; end; f := @c[1]; //仓库内容 g := @c; //门牌号 e := @c[1]; //仓库 d := @c[1]; //仓库内容 h := @c; showmessage(f); //aa showmessage(g); //乱码 showmessage(e^); //a showmessage(d); //aa showmessage(d^); //a // showmessage(h); //错误 // showmessage(e); //错误 showmessage(c); //aa end;procedure TForm1.Button3Click(Sender: TObject);varP: PChar;S1, S2: string;beginS1 := '1234567ABCDE'; S2 := S1;P := PChar(S1); ShowMessage(IntToStr(SizeOf(S1))); //获得 S1 变量的大小 ShowMessage(IntToStr(integer(S1))); //获得 S1 指向的字符串的指针地址ShowMessage(IntToStr(integer(P))); //获得 P 指向的字符串的指针地址ShowMessage(IntToStr(integer(S2))); //获得 S2 指向的字符串的指针地址S1 := P; ShowMessage(IntToStr(integer(S1)));ShowMessage(IntToStr(integer(P)));ShowMessage(IntToStr(integer(S2)));end;
展开
1个回答
展开全部
pchar:类型是一个指向空字符结束的字符串
^char:是一个字符指针。是个指针,里面的内容是字符。
var
c
:string;
d
:pchar;
e
:^char;
f
:pchar;
g,g1:Pchar;
h
:^char;
i:integer;
begin
setlength(c,10);
for
i:=
1
to
2
do
begin
c[i]
:=
'a';
end;
f
:=
@c[1];
//仓库内容
g
:=
@c;
//门牌号
g1
:=pchar(c);
//仓库内容,同d一样
e
:=
@c[1];
//仓库
d
:=
@c[1];
//仓库内容
h
:=
@c;
showmessage(f);
//aa
showmessage(g);
//把g赋值的是指针地址,显示当然是乱码了,可以改为一下句,显示内容
showmessage(g1);
showmessage(e^);
//a
showmessage(d);
//aa
showmessage(d^);
//a
//
showmessage(h);
//错误
h,e是指针
不能按字符显示showmessage(IntToStr(integer(h)));
//
showmessage(e);
//错误
showmessage(c);
//aa
end;
^char:是一个字符指针。是个指针,里面的内容是字符。
var
c
:string;
d
:pchar;
e
:^char;
f
:pchar;
g,g1:Pchar;
h
:^char;
i:integer;
begin
setlength(c,10);
for
i:=
1
to
2
do
begin
c[i]
:=
'a';
end;
f
:=
@c[1];
//仓库内容
g
:=
@c;
//门牌号
g1
:=pchar(c);
//仓库内容,同d一样
e
:=
@c[1];
//仓库
d
:=
@c[1];
//仓库内容
h
:=
@c;
showmessage(f);
//aa
showmessage(g);
//把g赋值的是指针地址,显示当然是乱码了,可以改为一下句,显示内容
showmessage(g1);
showmessage(e^);
//a
showmessage(d);
//aa
showmessage(d^);
//a
//
showmessage(h);
//错误
h,e是指针
不能按字符显示showmessage(IntToStr(integer(h)));
//
showmessage(e);
//错误
showmessage(c);
//aa
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询