字符串与字符数组的不同点

bamboo2000 2003-05-30 02:04:26
var
W1: String;
W2: array[0..13] of ansichar;
begin
W1 := 'This is string';
W2 := 'This is string';
end;

请问W1与W2有哪些不同呢?
...全文
30 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
oceanyan 2003-05-30
  • 打赏
  • 举报
回复
在delphi中 string的[0]内保存的是字符串的长度
w2[0]中保存的是w2的第一个字符
耙子 2003-05-30
  • 打赏
  • 举报
回复
w1[1]和 w2[0]的内容是相同的。
耙子 2003-05-30
  • 打赏
  • 举报
回复
string 类型与 c里面 \0结尾的字符创不同,

平便我们操作的都是 从1开始的string, 其实也是从0开始,只不过这个[0]被定义为别的了,就是这字符串的长度。
短字符串 这个 [0]是一个字节,这意味着它最长只能描述 255字节的字符串,
长字符串这个 [0]是4字节,但受win32体系限制,他最多能存储 2G的数据。

由于这个特点,当想得到一个字符串的长度的时候他只需要看他的[0]就行了,这个操作要远远快于c的扫描整个字符串遇到 \0的办法。
而且 pascal字符串还能存储 \0这个特殊字符,虽然它本身没什么意义。

另外,对于存储unicode 字符串string 再次体现出来优势,而c,必须要采用\0\0两个\0来表示结束。
bamboo2000 2003-05-30
  • 打赏
  • 举报
回复
刚才打错了W1[1]跟W2[1]不同
demonwinwin 2003-05-30
  • 打赏
  • 举报
回复
同意 chechy(简简单单的活)
bamboo2000 2003-05-30
  • 打赏
  • 举报
回复
可W1[1]为什么跟W2[1]相同啊,更让人想不通的是W1[0]根本没有啊
chechy 2003-05-30
  • 打赏
  • 举报
回复
string是delphi自动管理内存的类型。字符数组不是。在调用WinAPI时候,string需要做强制类型转换。
其他没有什么区别。
haoco 2003-05-30
  • 打赏
  • 举报
回复
最大不同点就是W1的长度是根据存放的字符串长度
而W2则是长度为14的数组.

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧