
使用动态数组
//示例1:
var
StrArr: 字符串数组; //动态数组未定义尺寸
开始
SetLength(StrArr,6); //分配6个元素位置: 0-5
StrArr [0]: ='以防万一'; //动态数组的下限为0
ShowMessage(StrArr [0]); //分配空间后,使用与静态数组相同的方法
StrArr: = nil; //通常,无需手动释放,动态数组会在离开范围时释放自身
end;
--------------------------------------------------- ---------------------------------
//示例2. 动态数组的引用:
var
Arr1,Arr2: 整数数组;
a: 整数的数组[0..1];

开始
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.数组复制<1>:

var
Arr1delphi数组间的赋值,Arr2: 整数数组;
开始
SetLength(Arr1,6);
Arr1 [5]: = 100;
Arr2: =复制(Arr1); //数组复制
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.数组复制<2>:
var

Arr1,Arr2: 整数数组;
i: 整数;
开始
SetLength(Arr1,6);
对于i: =从低(Arr1)到高(Arr1)// //分配每个元素
Arr1 [i]: = i + 1;
Arr2: =复制(Arr1,1,3); //仅复制第2..4th个元素
ShowMessage(IntToStr(Arr1 [1])); // 2,现在Arr2 [0]和Arr1 [1]的值相同
ShowMessage(IntToStr(Arr2 [0])); // 2
ShowMessage(IntToStr(Length(Arr1))); // 6delphi数组间的赋值,尺寸必须不同
ShowMessage(IntToStr(Length(Arr2))); // 3
end;
--------------------------------------------------- ---------------------------------
//示例5.动态多维数组:
var

Arr: 整数数组的数组; //定义多维数组
开始
SetLength(Arr,5,5); //分配空间
Arr [0,3]: = 100; //分配
ShowMessage(IntToStr(Arr [0,3])); //值
end;
--------------------------------------------------- ---------------------------------
//示例6.替代创建:
var
Arr: 整数数组;
开始
Arr: = varArrayCreate([0,3],varInteger);
ShowMessage(IntToStr(Length(Arr))); // 4
Arr: = VarArrayOf([1,2,3,4]);
ShowMessage(IntToStr(Arr [0])); // 1
{这是针对变量阵列的,可能存在效率问题}
end;
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-274206-1.html
草狗一定佩服你
美国
觉着生活还不如以前