[fpc-pascal] Re: Correct use of var in function calls?

Bo Berglund bo.berglund at gmail.com
Sat Feb 5 10:46:00 CET 2011


On Sat, 5 Feb 2011 09:24:44 +0100 (CET),
michael.vancanneyt at wisa.be wrote:

>
>No. Someone misunderstands the concept of dynamic array here.
>
>A "dynamic array" is a pointer to an array in memory.
>So when passing a dynamic array to a function, 
>you are, in fact, passing a pointer.
>
>> So is there a difference here between Delphi7 and FPC?
>
>No.
>

So in effect it means that all of these calls are exactly the same:

FillArr(const Arr: TByteArr)
FillArr(var Arr: TByteArr)
FillArr(Arr: TByteArr)

At least as long as the FillArr function does not attempt to change
the ponter itself like this:

Arr := SomeOtherArr;

In which case I guess that the only version that will carry this back
to the caller is the var version?

But that is not what I am doing at all, so I can stick with a simple:

FillArr(Arr: TByteArr)

and be sure that I will not get back a different array, but instead
get my array filled as requested...


-- 
Bo Berglund
Developer in Sweden




More information about the fpc-pascal mailing list