Are dynamic arrays passed by value? (Was: TList)

Jarrett Billingsley kb3ctd2 at
Wed Mar 19 06:00:40 PDT 2008

"Ary Borenszweig" <ary at> wrote in message 
news:frqsik$1ngj$1 at
> Writing that code without "ref" in "add" and "get" didn't work well the 
> first time. I got array index out of bounds. Aren't dynamic arrays always 
> passed by reference?

Yes, but the reference isn't passed by reference ;)

It's the same as something like:

void foo(char* s)
    s = realloc(s, 20);

Now s points to a new place in memory.  Yes, the contents pointed to by s 
were passed by reference, but the caller doesn't see the update to s.

In the same way:

void foo(char[] s)
    s ~= "hi!";

The local variable 's' is updated in the function, but the caller may not 
see those changes. 

More information about the Digitalmars-d-learn mailing list