zoukankan      html  css  js  c++  java
  • 动态数组的使用

    //例1:
    var
      StrArr: array of String;  //动态数组定义时不与维数
    begin
      SetLength(StrArr,6);  //分配6个元素位置: 0-5
      StrArr[0] := '万一'//动态数组的下界是 0
      ShowMessage(StrArr[0]);  //分配空间后和静态数组一样使用
      StrArr := nil;        //一般没必要手动释放, 动态数组离开作用域会自释放
    end;

    //例2. 动态数组的引用:
    var
      Arr1,Arr2: array of Integer;
      a: array[0..1] of Integer;
    begin
      SetLength(Arr1,6);
      Arr1[5] := 100;
    
      Arr2 := Arr1;  //Arr2 引用了 Arr1
      ShowMessage(IntToStr(Arr2[5]));  //100
      ShowMessage(IntToStr(Length(Arr2)));  //当然 Arr2 维数也会是 6
    
      ShowMessage(IntToStr(SizeOf(Arr1)));  //4, 其实动态数组是个指针
      ShowMessage(IntToStr(SizeOf(Arr2)));  //4
    
      Arr2[5] := 99;                   //现在它们指向同一个数组, 改变这个就是改变那个
      ShowMessage(IntToStr(Arr1[5]));  //99
    
      Arr1 := nil;                     //释放其中一个指针, 数组继续存在
      ShowMessage(IntToStr(Arr2[5]));  //99
    end;

    //例3. 数组 Copy <1>:
    var
      Arr1,Arr2: array of Integer;
    begin
      SetLength(Arr1,6);
      Arr1[5] := 100;
    
      Arr2 := Copy(Arr1);  //数组 Copy
      Arr2[5] := 99//改变 Arr2 不再影响 Arr1
      ShowMessage(IntToStr(Arr1[5]-Arr2[5]));  //1
    
      SetLength(Arr1,7);
      ShowMessage(IntToStr(Length(Arr1)));  //7
      ShowMessage(IntToStr(Length(Arr2)));  //6, 没有一点牵扯了
    end;

    //例4. 数组 Copy <2>:
    var
      Arr1,Arr2: array of Integer;
      i: Integer;
    begin
      SetLength(Arr1,6);
      for i := Low(Arr1) to High(Arr1) do  //给每个元素赋值
        Arr1[i] := i+1;
    
      Arr2 := Copy(Arr1,1,3);  //只 Copy 第2..4个元素
    
      ShowMessage(IntToStr(Arr1[1]));  //2, 现在 Arr2[0] 和 Arr1[1] 的值是一样的
      ShowMessage(IntToStr(Arr2[0]));  //2
    
      ShowMessage(IntToStr(Length(Arr1)));  //6, 维数肯定不一样了
      ShowMessage(IntToStr(Length(Arr2)));  //3
    end;

    //例5. 动态多维数组:
    var
      Arr: array of array of Integer;  //定义多维数组
    begin
      SetLength(Arr,5,5);  //分配空间
      Arr[0,3] := 100;     //赋值
      ShowMessage(IntToStr(Arr[0,3]));  //取值
    end;

    //例6. 另类建立:
    var
      Arr: array of Integer;
    begin
      Arr := varArrayCreate([0,3],varInteger);
      ShowMessage(IntToStr(Length(Arr)));  //4
    
      Arr := VarArrayOf([1,2,3,4]);
    
      ShowMessage(IntToStr(Arr[0]));  //1
      {这是给变体数组使用的,可能会有效率问题}
    end;
  • 相关阅读:
    jq常用操作
    Vue过滤器
    NodeJS跨域问题
    js获取url参数(通用方法)
    jq动画实现左右滑动
    vue-cli3.0 gui(一)
    微信小程序无法定位
    java连接数据库报了ssl连接的警告
    node——module.exports
    node——Commonjs
  • 原文地址:https://www.cnblogs.com/jijm123/p/11393591.html
Copyright © 2011-2022 走看看