Why are fixed length arrays passed by value while variable are passed by reference?
ixid
nuaccount at gmail.com
Thu Apr 18 07:20:47 PDT 2013
> An array is represent using a struct with a pointer to the
> array data and the length, like this:
>
> struct Array
> {
> void* ptr;
> size_t length;
> }
>
> The struct is passed by value, but since it contains a pointer
> to the data it will be passed by reference. Note that if you do:
>
> void foo (int[] a)
> {
> a ~= 3;
> }
>
> auto b = [3, 4];
> foo(b);
>
> The caller will not see the change made by "foo".
>
> Don't know if this explanation helped you to understand.
What does a fixed length array look like when passed, doesn't it
have a similar payload of data and length? I take it you mean the
struct method is the variable length array.
More information about the Digitalmars-d-learn
mailing list