zoukankan      html  css  js  c++  java
  • delphi中pchar、char、string的定义与区别

    Char是单个字符;
    PChar 就是指向一个以Null 结尾的每个字符为一个字节的字符串的指针。 (可以看成是一个字符串)
    String是字符数组,以字符#0结尾;


    Char只占一字节的空间,而Pchar保存的是一个指针,在现在32位的系统中占有1个指针字节的大小。
    type PChar=^Char;

     PChar类型是一个指向Char的指针,并使用Delphi的扩展语法.它也能够作为一个String或者是一个Char数组指针来对待。

    Pchar的用途

    1.PChar最经常的使用方式就是作为用C或C++编写的DLL,如Windows API的一个参数类型.
    2.可以把一个PChar作为一个Char数组指针来对待.数组下标是Integer的子区间,从零开始. Delphi不对该数组提供任何边界检查.通常字符串的结束用#0字符来表示.
    3.通常通过与INC和DEC过程相似的加减整数来完成对PChar指针的算术运算. 

    Pchar的转换

    长字符串转换到PChar不是自动的。他们之间的不同点导致他们的转换存在问题。

    1,长字符串是引用计数的,而PChar不是
    2,赋值给长字符串是数据的拷贝,而PChar是指向数据的指针。
    3,长字符串是空止符结尾,并包含有字符串的长度。而PChar是简单的空止符结尾。( 空止符结尾指以#0结尾)

    例子

    //举例:
    var
    pc: PChar;
    begin
    pc := 'ABCD' + #0 + 'EFGHIJKLMNOPQRSTUVWXYZ';
    ShowMessage(pc); {ABCD}
    end;

    这个例子表明,Pchar可以做为一个以#0结尾的char字符数组
    转换:
    string是delphi内定义类型,pchar则是一个指针字符串,后缀有#0。

    相互转换的话strpas(pchar);//pchar转成string
    strpcopy(pchar,string);
    或直接pchar(string) //string转成pchar

    string ——> char的转换

    //举例
    procedure TForm1.Button1Click(Sender: TObject);
    var
    ch:array
    [0..5] of char;
    str:string;
    i:integer;
    begin
    str :='123456';
    move(str[1],ch,length(str));//Move说明:Move(从字符串的多少位开始移,移到目标,移动多少个长度或大小,注意sizeof与legth的区别)
    for
    i:=0 to 5 do
        edit1.Text :=edit1.Text + ch[i];//show:123456
    //move(str[3],ch,4);//ch=3456
    end;

    1、使用指向字符串的指针,如果不是以0结尾,运行时就会出现错误。为了避免这种错误,需要在字符串结尾人工加入0 
    即char(0),或用strpcopy函数在字符串结尾自动加0。
    例3: 用strpcopy函数赋值会在字符串s结尾自动加0。

    var
    s:array of char; {s[0]=4 s[1]='n' s[2]='e' s[3]='w' s[4]=0;} {p-->'new'}
    p:pchar;
    begin
    p:=@s[1];

    strpcopy(p,'new');{strpcopy函数在字符串结尾自动加0}
    label1.caption:=strpas(p);{new}

    label2.caption:=s;{new}
    //label3.caption:=intTostr(integer(s[0]));{4}

    end;

  • 相关阅读:
    Largest Rectangle in Histogram
    Valid Sudoku
    Set Matrix Zeroes
    Unique Paths
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Path Sum II
    Path Sum
    Validate Binary Search Tree
    新手程序员 e
  • 原文地址:https://www.cnblogs.com/pboy/p/5310765.html
Copyright © 2011-2022 走看看