首页 新闻 赞助 找找看

delphi字符串分配空间

0
悬赏园豆:10 [已解决问题] 解决于 2015-07-28 11:51

刚回顾了一下字符串,遇到一个问题,还望大神们赐教:

var

  s : String;

begin

  s :='a'; //这块地方为什么不用显式的分配空间,编译器帮我们做了什么事?

  s[1] :='a'; //这里就出了问题,需要用SetLength()分配空间

end;

问题补充:

如果在定义的时候这样写,也没问题。

var

  s : String[1];

ChenYao_Freedom的主页 ChenYao_Freedom | 初学一级 | 园豆:5
提问于:2015-07-28 11:41
< >
分享
最佳答案
0

s :='a' 重载了 = 操作符,先分配空间,然后拷贝字符串;

s[1] 直接下标访问,没有分配操作。

s : String[1]; 分配了空间。

 

然后我要告诉你的是,这不是编译器帮你做了啥的问题,而是语法是这么设计的,编译器只是支持此种语法。

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2015-07-28 11:49

感谢大神赐教

ChenYao_Freedom | 园豆:5 (初学一级) | 2015-07-28 11:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册