多维动态数组的基础问题求解。 ( 积分: 20 )

  • 主题发起人 主题发起人 QSmile
  • 开始时间 开始时间
Q

QSmile

Unregistered / Unconfirmed
GUEST, unregistred user!
1. 我定义了一个二维的动态数组。如:
m_MixData :array of array of byte;
申请空间时:我用 SetLength(m_MixData,width,height);
申请了第一次空间后,我在里面填了些数据。
a. 我再用 SetLength() 来改变了数组的大小,这时这些数据还在不???
b. 如果第二次比第一次的空间大,那多出来的空间是否自动用0来填充???
(以上两个我已试过,我想得到点理论上的支持)

2. 可不可以申明这一个这样的动态数据。第一维是固定大小的,而第二维是可变的??
如何申明???
 
1. 我定义了一个二维的动态数组。如:
m_MixData :array of array of byte;
申请空间时:我用 SetLength(m_MixData,width,height);
申请了第一次空间后,我在里面填了些数据。
a. 我再用 SetLength() 来改变了数组的大小,这时这些数据还在不???
b. 如果第二次比第一次的空间大,那多出来的空间是否自动用0来填充???
(以上两个我已试过,我想得到点理论上的支持)

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,10);
end;
end;
 
楼上的应当写错了一些
var
A: array of array of byte;
begin
SetLength(A,10);
for I:=Low(A) to High(A) do
begin
SetLength(A,I);
end;
end;
 
一楼说的是两种方法。
 
a. 我再用 SetLength() 来改变了数组的大小,这时这些数据还在不???
-->还在的


b. 如果第二次比第一次的空间大,那多出来的空间是否自动用0来填充???
--》
不一定的

2. 可不可以申明这一个这样的动态数据。第一维是固定大小的,而第二维是可变的??
如何申明???
可以,但没有必要呀
 
啊,讨厌不初始化,虽然速度快
 
多人接受答案了。
 
后退
顶部