一维数组转为二维数组?(50分)

  • 主题发起人 主题发起人 3wccdel
  • 开始时间 开始时间
3

3wccdel

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样把一维数组aa[0..30*50]-->aa[0..30,0..50]?
 
for i:=1 to 30 do
for j:=1 to 50 do
aa[j]:=AA[(i-1)*50+j]
 
来去若梦行的程序似乎是错误的
aa[j]:=AA[(i-1)*50+j]
~~ ~~在Pascal中大小写并不敏感。

var
aa: array [0..30 * 50] of Integer;
bb: array [0..30] of PIntegerArray;
i: Integer;
begin
for i := 0 to 30 do
bb := @aa[i * 50];
...
end;

那么就可以通过bb[i, j]对aa进行访问了。
 
JohnsonGuo:
PIntegerArray是什么东东,我怎么在delphi下的help中找不到?
 
如果我没理解错的话:

type
IntegerArray=array of Integer;
PIntegerArray=^IntegerArray;

我试了一下——编译都通不过。 指针和数组指针好像不能...
有必要吗?不就多一个"i*50+j"吗?
我想,在访问二维数组的时候,delphi是要执行这个运算的。只不过写起来方便一点而已。
 
真是对不起,写少了些定义.

type
PIntegerArray = ^TIntegerArray;
TIntegerArray = array[0..8191] of Word;
 
JohnsonGuo:
我对指针不是很了解。
》bb := @aa[i * 50];
是不是取aa的地址的值?
我试了 “来去若梦行”的代码 aa[j]:=bb[(i-1)*50+j] 好象可行,你看
错误在什么地方?
 
bb := @aa[i * 50]
是指取aa第i * 50个元素的地址。

来去若梦行,当然可行。我只是给出另一个可行办法罢了。
 
JohnsonGuo:
谢谢!
 
后退
顶部