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