各位老师好:
我的代码如下:
var
p1:pchar;
s1:string;
begin
s1:='abcded';
strpcopy(p1,s1);  //程序走到这一步时出错,提示access violation错误。
end;
为什么会出现错误,请指教。
 后来我把程序修改如下:
var
p1:array[0..100] of char;
s1:string;
begin
s1:='abcded';
strpcopy(p1,s1);  
end;
程序不提示错误,请问array[0..n] of char 与pchar是否同一类型?
两者有什么区别?

解决方案 »

  1.   


    begin
      s1:= 'abcded ';
      p1 := GetMemory(Length(s1)+1);
      strpcopy(p1,s1);  //程序走到这一步时出错,提示access violation错误。
    end;
    //函数解释,需要分配空间
    function StrPCopy(Dest: PChar; const Source: string): PChar;DescriptionStrPCopy copies a Pascal-type string Source into a null-terminated string Dest. It returns a pointer to Dest.StrPCopy does not perform any length checking. The destination buffer must have room for at least Length(Source)+1 characters.
      

  2.   

    var
      vP:PChar;//一个Char类型的指针
      vv:array[0..99] of Char;//声明数组的时候就分配空间
      vStr:string;
    begin
      vStr:='tdsdfghgfd';
      vP:=@vv;//把数组的地址给指针,也可以这样写@vv[0],把数组的首地址给指针
      strpcopy(vP,vStr);
    end;
    PChar是Char的指针类型,类似的还有Pinteger,Pword等等
    指针指向已经分配内存的地址才能操作
      

  3.   

    var
      p:PChar;
      s:string;
    begin
      s:= 'tdsdfghgfd ';
      p:=@s[1];
    end;