动态数组的赋值问题? ( 积分: 10 )

  • 主题发起人 主题发起人 sunnysheng
  • 开始时间 开始时间
S

sunnysheng

Unregistered / Unconfirmed
GUEST, unregistred user!
a:array of array of array [0.4] of String;
b:array of String;
setLength(a,3);
setLength(b,3);
a[0,0,0]:= b[0,0];//会出错
a[0,0,0]:= '12345';//也会出错
问题:如何进行赋值?
 
a:array of array of array [0.4] of String;
b:array of String;
setLength(a,3);
setLength(b,3);
a[0,0,0]:= b[0,0];//会出错
a[0,0,0]:= '12345';//也会出错
问题:如何进行赋值?
 
a[0,0,0]:= b[0,0];//会出错
a是三维数组,b[0,0]是二维数组,能互相赋值吗
而'12345'只能算单维的了
 
procedure TForm1.Button1Click(Sender: TObject);
var
a:array[0..3,0..3,0..3] of string;
b:array of String;
begin
a[0,0,0]:='aaa';
setlength(b,3);
b[0]:=a[0,0,0];
end;
 
b是一维数组啊,恐怕不能用b[0,0]吧,只能用b[0],或者b[0][1]

a[0,0,0]:= '12345'当然会出错,因为SetLength(a,3)只给第一维分配了内存,第二维和第三维都没有分配内存,a[0,0,0]指向的是一个没有分配的内存空间。
 
to:龙之脊
那如何对第二,三维分配空间
 
lz对多维数组的概念并不是很了解
按照lz的定义,a是一个三维数组,第一维是一个动态数组,第二维也是一个动态数组,第三维是一个静态字符串数组
因此,对a的初始化应该是:
SetLength(a, 3)
//初始化第一维

//初始化第二维(需要对第一维中的每一个元素都进行初始化才行)
SetLength(a[0], 3)

SetLength(a[1], 3);
SetLength(a[2], 3);
 
哈哈,看了放飞的回复,看来是我理解错误
 
接受答案了.
 
后退
顶部