函数参数的疑惑
procedure TForm1.sss(var EmpList:array of integer);
begin
SetLength(EmpList,MaxON);
end;
????[Error] Unit1.pas(27): Incompatible types
解决100分
问题点数:100、回复次数:6Top
1 楼winstarr(星仁)回复于 2005-04-03 21:07:00 得分 0
不能用var.Top
2 楼koala190(臻子)回复于 2005-04-03 21:08:37 得分 0
winstarr(星仁) 为什谋Top
3 楼shove(shove)回复于 2005-04-03 21:09:48 得分 100
procedure TForm1.sss(EmpList: array of integer);
var
i: integer;
begin
for i := 0 to 9 do
ShowMessage(IntToStr(EmpList[i]));
end;
procedure TForm1.SetValue;
var
a: array of integer;
i: integer;
begin
SetLength(a, 10);
for i := 0 to 9 do
a[i] := i;
sss(a);
end;
Top
4 楼shove(shove)回复于 2005-04-03 21:12:41 得分 0
用 var 是可以的。
动态数组是不能这样传递给其他函数来分配空间的Top
5 楼koala190(臻子)回复于 2005-04-03 21:16:38 得分 0
能说具体一点吗:shove(shove)Top
6 楼shove(shove)回复于 2005-04-03 21:21:31 得分 0
动态数组的名字相当于指针(相当于),
SetLength(指针,大小).
--------------------------
而作为参数传递后:
procedure TForm1.sss(EmpList: array of integer);
var
i: integer;
begin
for i := 0 to 9 do
ShowMessage(IntToStr(EmpList[i]));
end;
这里,接受它的函数,不认为他是指针,是有实际大小的数组。Top




