delphistring类型和pchar的区别

delphistring类型和pchar的区别

ID:34416105

大小:31.00 KB

页数:3页

时间:2019-03-05

delphistring类型和pchar的区别_第1页
delphistring类型和pchar的区别_第2页
delphistring类型和pchar的区别_第3页
资源描述:

《delphistring类型和pchar的区别》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、string类型和pchar的区别       string和Char数组都是一块内存,其中存放连续的字符.string保存具体字符的内存对用户是透明的,由Delphi管理它的分配,复制和释放,用户不能干预(其实也可以,不过是通过非法途径).Char数组就不必说了吧?PChar是一个指针,它的大小只有32位.定义时由Delphi自动填0.要将PChar作为字符串使用的话必须自己分配内存用完必须自己释放.PChar型字符串由#0表示字符串结尾Delphi所提供的相关PChar字符串的操作都是判断#0来决定字符串的结尾的。因为PChar是指针,所以它能指向任

2、何地方(也就是说它不一定非要指向字符串不可).把一个String赋值给PChar只是将String中保存具体字符串的内存的地址给PChar变量.当然也可以把Char数组第一个元素的地址给PChar.至于哪个占用内存小,Char数组<PChar(指分配过字符串的)<string(除了具体字符串外还包含字符串长度)如果空字符串那么PChar<String<array[0..n]ofChar从速度来说毫无疑问string最慢,例如:作为参数传递(非var调用时)给过程时string将整个字串的副本传递过去,PChar将指针本身的副本传递过去(32位),Char

3、数组和PChar一样,传递的是第一个元素的地址副本.不过就灵活性来说string最高,而且Delphi支持的函数最多.另外可以将String作为Buffer使用(因为它当中可以包含字符0).amo(2000-9-201:35:26)  ----------------------------------------------------------------------------------在Delphi2.0以后的版本中,string分两种,   一种是与Pascal传统string相兼容,叫ShortString,   它的存储结构如下:   

4、 +---------------------+        

5、1Byte

6、   字符串内容

7、    +---------------------+    0        1......     其中第一个字节为字符串的长度。     所以ShortString所能包括的字符串长度不能大于255。   另一种是叫长字符串AnsiString,   它就是一个指向字符串的指针,不过具体的存储有些特别。   它的存储结构如下:   +-----------------------+   

8、4B

9、4B

10、   字符串内容

11、   +--------------

12、---------+   -8    -4    0   ......   其中,AnsiString指向字符串第一个字符,         在第一个字符的反方向第1到第4的4个字节表示字符串长度,第5到第8的4个字节表字符串被引用的次数。pchar就是纯指向字符串(#0字符结尾)的指针,与C语言中的char*是一样的。char数组也是指向字符串的指针,它与pchar的区别在于:     1.char数组(均指非动态数组)一旦定义好,它的长度就固定了;     2.char数组的地址是常量,不能另赋其它值,不能象pchar一样,        如:sPc

13、har:pchar;sArray1,sArray2:array[0..80]ofchar;          sPChar:=sArray2;sPChar;=sArray1;          但不能sArray2:=sArray1;    char数组就相当于constchar*  要说速度最快当然是纯指针操作的pchar与char数组最快啦所谓占内存最少,效率更高,不知老兄你想进行什么方面的应用,一般对string,pchar或char数组,不用考虑这些。对编程而言,如果在Delphi或C++Builder中使用,可尽量使用AnsiString,Bo

14、rland公司对它已经进行了非常完美的内部处理,使用非常方便。如果涉及到WindowsAPI或混合编程等,接口部分一般使用pchar。char数组使用的比较少了,因为多数可以用char数组的地方,现在比较流行的作法是定义一个ansistring,再用setlength来设定它的长度。lycwg(2001-1-1211:53:20)  ------------------------------------------------------------三、字符串string字符数组与指向字  符串的指针pchar的区别与联系  这3者的基本概念相同,但有

15、一些非常细微的差别,在编程时稍不注意就会出错,需高度重视。  1、使用指向字符串

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。