delphi PChar和Array of Char的区别

如题所述

string和Char数组都是一块内存, 其中存放连续的字符. string保存具体字符的内存对用户
是透明的, 由Delphi管理它的分配, 复制和释放, 用户不能干预(其实也可以, 不过是通过
非法途径). Char数组就不必说了吧?
PChar是一个指针, 它的大小只有32位. 定义时由Delphi自动填0. 要将PChar作为字符串
使用的话必须自己分配内存用完必须自己释放. PChar型字符串由#0表示字符串结尾
Delphi所提供的相关PChar字符串的操作都是判断#0来决定字符串的结尾的。
因为PChar是指针,所以它能指向任何地方(也就是说它不一定非要指向字符串不可).
把一个String赋值给PChar只是将String中保存具体字符串的内存的地址给PChar
变量. 当然也可以把Char数组第一个元素的地址给PChar.
至于 哪个占用内存小, Char数组<PChar(指分配过字符串的)<string(除了具体字符串外
还 包含字符串长度)
如果空字符串那么PChar<String<array [0..n] of Char
从速度来说毫无疑问string最慢, 例如:
作为参数传递(非var调用时)给过程时string将整个字串的副本传递过去, PChar将指针
本身的副本传递过去(32位), Char数组和PChar一样, 传递的是第一个元素的地址副本.
不过就灵活性来说string最高, 而且Delphi支持的函数最多. 另外可以将String作为
Buffer使用(因为它当中可以包含字符0).
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网