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;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询