在函数调用和定义中如何处理两维数组(100分)

  • 主题发起人 主题发起人 y313
  • 开始时间 开始时间
Y

y313

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用一函数,通过参数调用两维数组,如何办?
 
将两维数组按地址传递,具体方法查一下书吧
 
我的意思是能否用像用一维数组做形参的简单的方法
 
type
TTable = array[1..20, 1..20] of Double;

Then you can declare a variable of the TTable type:

var
BigTable: TTable;

To initialize all the values in the table to 0.0, you could use nested for loops:

var
Col, Row: Integer;
...
for Col := 1 to 20 do
for Row:= 1 to 20 do
BigTable[Col, Row] := 0.0

 
该问题是如何将二维数组用做函数的参数来传递
 
在有了以上定义以后,只要如此声明过程即可:
Procedure MyProc(AArray:TTable);
var
Col, Row: Integer;
ThisArray: TTable;
begin

for Col := 1 to 20 do
for Row:= 1 to 20 do
ThisArray[Col, Row] := AArray[Col, Row]
end;
 
按地址传递,在自己的函数中在对此参数的类型说明。
 
传入三个参数:
Array的地址,Array的第一维长度,Array的第二维长度。

借用saintor的程序:
type
TTable = array[1..20, 1..20] of Double;

Procedure MyProc(const AArray:TTable;const iCol,iRow:integer);
var
Col, Row: Integer;
ThisArray: TTable;
begin
for Col := 1 to iCol do
for Row:= 1 to iRow do
ThisArray[Col, Row] := AArray[Col, Row];
end
 
这样才好:


type
arrMyType: array[0..10, 0..10] of Integer;

var
a: arrMyType;

procedure myProcedure(aArray: arrMyType);
begin
...
end;

调用时,myProcedure(a);

或者:
MyArrayTypeOne: array[0..10] of Integer;
MyArrayTypeTwo: array[0..10] of MyArrayTypeOne;

var a: MyArrayTypeTwo;

其余的就不说了。
 
定义一个数组型指针;
可以通过它进行参数传递。
 
多人接受答案了。
 
后退
顶部