Delphi数组个数是变量怎样定义

c#中数组是这样定义的,int[]a=newint[5];Delphi中是这样的,s:array[1..5]ofinteger;如果这个5要是变量,Delphi中该如何定... c#中数组是这样定义的,int[] a=new int[5];

Delphi中是这样的,s:array[1..5] of integer;
如果这个5要是变量,Delphi中该如何定义数组呢?
展开
 我来答
syht2000
高粉答主

推荐于2017-11-26 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
动态数组的使用
//例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;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式