zoukankan      html  css  js  c++  java
  • Delphi 动态数组的理解

    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 也是传递引用,只要不赋值就是传递引用。

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

  • 相关阅读:
    java中 == 与equals 的区别
    java中的多线程 // 基础
    MySQL-锁机制
    将博客搬至CSDN
    MySQL-事务
    MySQL-存储过程
    MySQL-触发器
    MySQL-视图
    Redis设置Auth认证保护
    PHP目前常见的五大运行模式
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/2125030.html
Copyright © 2011-2022 走看看