我编程中出现了一个问题,我定义的一个二维数组里面的每一个值都随时间在变,我想定义二维数组里面的每个值也为数组,有这样的定义方法吗?
动态数组的使用
//例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;
--------------------------------------------------------------------------------
//例5. 动态多维数组:
Var
Arr: array of array of Integer; //定义多维数组
Begin
SetLength(Arr,5,5); //分配空间
Arr[0,3] := 100; //赋值
ShowMessage(IntToStr(Arr[0,3])); //取值
end;
//例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;
--------------------------------------------------------------------------------
//例5. 动态多维数组:
Var
Arr: array of array of Integer; //定义多维数组
Begin
SetLength(Arr,5,5); //分配空间
Arr[0,3] := 100; //赋值
ShowMessage(IntToStr(Arr[0,3])); //取值
end;
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-01-11
把你现在二维数组里面的每个值定义为一个指针地址指向一个数组。本回答被提问者采纳