Calling C function with static array includes length and pointer
Ali Çehreli
acehreli at yahoo.com
Mon Jun 21 15:43:36 PDT 2010
mwarning wrote:
> Anyway, the D spec says:
> "Static arrays are value types, but as in C static arrays are passed to
> functions by reference and cannot be returned from functions."
> (http://www.digitalmars.com/d/1.0/arrays.html#static-arrays)
I've been thinking D2. :) In D2, fixed-sized arrays are value types and
copied to and from functions:
import std.stdio;
int[2] foo(int[2] array)
{
writeln("in foo : ", &(array[0]));
return array;
}
void main()
{
int[2] array;
writeln("in main 1: ", &(array[0]));
int[2] result = foo(array);
writeln("in main 2: ", &(result[0]));
}
All three addresses are separate in D2.
Ali
More information about the Digitalmars-d
mailing list