• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi动态数组的理解

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Delphi动态数组也是生存期自动管理的,当离开动态数组的作用域的时候,他会自动清除内存,不需要你手动清除。

但是你也可以手动清除,只需要  Array := nil; 就可以了。

var
  A1, A2: array of string;
begin
  SetLength(A1, 1);
  A1[0] := 'aaa';
  A2 := A1;
  A2[0] := 'bbb';
  ShowMessage(A1[0]);
end;

打印出来的结果是“bbb”

我的理解是  A2 := A1 这个并不是新建一个数组,只是把A1数组的引用给了A2,这样A1,A2同时指向这个内存区域,当修改A2数组的值的时候,其实就是修改A1内存的值。

var
  s1, s2: string;
begin
  s1 := 'aaa';
  s2 := s1;
  s2 := 'bbb';
  ShowMessage(s1);
end;

打印出来的结果是“aaa”

我的理解是  当S2 := s1 的时候,也是把S1的引用给了S2,但是下面的S2 := 'bbb',这个代码的操作是把S2这个字符串有开辟了一块内存,用于存放S2。这样你修改S2 := 'bbb'.

S1的值不会发生变化。所以当S2 := S1 也是传递引用,只要不赋值就是传递引用。

不管你信不信,我反正是信了。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab中hdlcoder的使用发布时间:2022-07-18
下一篇:
python_matlab_样条插值求未知曲线的函数解析式发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap