多维动态数组的基础问题求解。
财务软件版1楼: 1. 我定义了一个二维的动态数组。如:
m_MixData :array of array of byte;
申请空间时:我用 SetLength(m_MixData,width,height);
申请了第一次空间后,我在里面填了些数据。
a. 我再用 SetLength() 来改变了数组的大小,这时这些数据还在不???
b. 如果第二次比第一次的空间大,那多出来的空间是否自动用0来填充???
(以上两个我已试过,我想得到点理论上的支持)
2. 可不可以申明这一个这样的动态数据。第一维是固定大小的,而第二维是可变的??
如何申明???
for I:=Low(A) to High(A) do
begin
SetLength(A[I],I);
end;
end;
m_MixData :array of array of byte;
申请空间时:我用 SetLength(m_MixData,width,height);
申请了第一次空间后,我在里面填了些数据。
a. 我再用 SetLength() 来改变了数组的大小,这时这些数据还在不???
b. 如果第二次比第一次的空间大,那多出来的空间是否自动用0来填充???
(以上两个我已试过,我想得到点理论上的支持)
2. 可不可以申明这一个这样的动态数据。第一维是固定大小的,而第二维是可变的??
如何申明???
2楼: 回答2.
多位数组也可以看成数组的数组
你有两种方式可以选择.如下
Type
TA=array of array[0..1] of char;
TB=array[0..1] of array of char;
var
A:TA;
B:TB;
I:Integer;
begin
SetLength(A,10);
for I:=Low(B) to High(B) do
begin
SetLength(B[I],10);
end;
end; 如网络管理软件
3楼: 楼上的应当写错了一些
var
A: array of array of byte;
begin
SetLength(A,10);
for I:=Low(A) to High(A) do
begin
SetLength(A[I],I);
end;
end;
4楼: 一楼说的是两种方法。
5楼: a. 我再用 SetLength() 来改变了数组的大小,这时这些数据还在不???
-->还在的
b. 如果第二次比第一次的空间大,那多出来的空间是否自动用0来填充???
--》
不一定的
2. 可不可以申明这一个这样的动态数据。第一维是固定大小的,而第二维是可变的??
如何申明???
可以,但没有必要呀
6楼: 啊,讨厌不初始化,虽然速度快
财务软件版7楼: 多人接受答案了。