请问下面delphi程序中c,d,e,f,h,i,j,分别表示什么含义。

procedure TForm1.Button1Click(Sender: TObject);
var a:array of array of integer;
var c,d,e,f,g,h,i,j:string;
begin
setlength(a,3,4);
setlength(b,4,3);
c:=inttostr(high(a));
d:=inttostr(high(a[0]);
e:=inttostr(low(a));
f:=inttostr(low(a[0]));
//下面可能是错误的
g:=inttostr(high(a[1]);
h:=inttostr(high(a[2]);
i:=inttostr(high(a[3]);
j:=inttostr(high(a[4]);
//上面可能是错误的
end;
a是二维数组,为什么会写成a[0]?

c:=inttostr(high(a)); C应该=2 代表第一维的最大数 a[i],i的最大数是2
d:=inttostr(high(a[0]); d=3,代表,a[0] 这个数组,a[0,j] .j 的最大数是3
d:=inttostr(high(a[0]);
e:=inttostr(low(a)); 这两个当然都是0了。

g:=inttostr(high(a[1]);
h:=inttostr(high(a[2]); 这两个没错,和a[0] 的值一样。一个意思。

var
A : array of array of string;
I, J : Integer;
begin
SetLength(A, 10);
for I := Low(A) to High(A) do
begin
SetLength(A[I], I);
for J := Low(A[I]) to High(A[I]) do
A[I,J] := IntToStr(I) + ',' + IntToStr(J) + ' ';
end;
end;

运行一下这段。。你就明白了。

有点事,出去了,等我写完这段,发现问题已经结束了,呵呵,
还是发上去吧,供参考。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-30
a是二维数组,那么a[0]、a[1]...分别就是一个一维数组。
setlength(a,3,4); //a此时就是a[0..2,0..3]
c是二维数组a 的第一维的最大的下标值,就c=2; 同理e=0;
d是一维数组a[0],及二维数组a的第二维的最大下标值,d=3;同理f=0;
g=h=d=3;
i和j由于a[3]、a[4]都超出了a的第一维的下标最大值,所以会报内存错。

另:
1、b没有声明。
2、以下语句少一个右括号,如d:=inttostr(high(a[0]));
d:=inttostr(high(a[0]);
g:=inttostr(high(a[1]);
h:=inttostr(high(a[2]);
i:=inttostr(high(a[3]);
j:=inttostr(high(a[4]);本回答被提问者采纳
相似回答