【发布时间】:2016-11-22 21:41:44
【问题描述】:
我在某些地方读到了一些关于这方面的理论资料,但我还不明白......
假设我有这个函数和程序:
function ProcessVars1(var param1: type1; var param2: type2; var param3: type3): Boolean;
function ProcessVars2(var param1: type1; var param2: type2; var param3: type3): Boolean;
function ProcessVars3(var param1: type1; var param2: type2; var param3: type3): Boolean;
function ProcessVarsX(var param1: type1; var param2: type2; var param3: type3): Boolean;
function ProcessVars(const x: Integer; var param1: type1; var param2: type2; var param3: type3): Boolean;
var
Res: Boolean;
begin
case x of
1: Res := ProcessVars1(param1, param2, param3);
2: Res := ProcessVars2(param1, param2, param3);
3: Res := ProcessVars3(param1, param2, param3);
...
end;
Result := Res;
end;
procedure DoSomething;
var
x: integer;
var1: type1;
var2: type2;
var3: type3;
begin
// Determine X
x := 1;
if ProcessVars(x, var1, var2, var3) then
begin
// Use var1, var2 and var3
end;
end;
我想知道的是,在调用“DoSomething”过程时,变量var1、var2和var3是在内存中只创建一次还是3次?
有没有办法避免每次调用函数时都创建变量?我的意思是,ProcessVars 和 ProcessVarsX 只是改变了变量的内容,而不是在内存中重新创建它?
谢谢!
【问题讨论】:
-
我完全不明白这个问题。每次调用它声明的函数时,都会创建和销毁一个局部变量。
-
感谢@DavidHeffernan!但是,有没有办法避免在每次调用函数时创建变量?我的意思是,ProcessVars 和 ProcessVarsX 只是改变变量内容,而不在内存中重新创建它?
-
仔细阅读大卫的评论。 “它声明的函数”在您的代码中是“DoSomething”,而不是“Process..”。
-
好吧,让我更好地理解...所以变量 var1、var2 和 var3 是由“DoSomething”过程在内存中创建的,而其他函数 ProcessVars 和 ProcessVarsX 只使用相同的内存分配空间?我是对的?
-
由于它们是在ProcessVars中声明的var,所以它们是通过引用传递的。
标签: function delphi parameters