A:
默认的函数调用都是实参,也就是说函数内部可以修改入口参数,如下范例所示:
Function Function304();
Begin
A:=10;
B:=1;
ab(A,B);
return array(A,B);
//返回结果:A=11,B=11,由于调用子函数ab,导致A/B两个参数的值发生了改变
end;
function ab(v1,v2);
begin
v1++;
v2+=10;
end
如果不想造成这种困扰,代码中采用{$VarByRef-}编译选项可以使得默认采用形参的模式。参考范例如下:
Function Function304();
Begin
{$VarByRef-}
A:=10;
B:=1;
ab(A,B);
return array(A,B); //返回结果:A=10,B=1,保护了参数的值
end;
function ab(v1,v2);
begin
v1++;
v2+=10;
end
如果确实希望个别的参数的值被改变,其他的参数保持原值不变,还可以用In out前缀指示送入的是形参还是实参,或者Var Const。参考范例如下:
Function Function304();
Begin
A:=10;
B:=1;
ab(in A,out B); //此处in可以换成const
return array(A,B); //返回结果,A=10,B=11,A保留原值
end;
function ab(v1,v2);
begin
v1++;
v2+=10;
end