Static arrays passed by value..?

simendsjo simen.endsjo at pandavre.com
Sat Aug 7 09:26:45 PDT 2010


The spec for array says:
	Static arrays are value types. Unlike in C and D version 1, static 
arrays are passed to functions by value. Static arrays can also be 
returned by functions.

I don't get the "static arrays are passed to functions by value" part.

Here I am passing in a static and dynamic array. Both are passed by 
value, and the function can modify the array of both

	{
		void func(int[] arr, void* ptr) {
			arr[0] = 9;
			assert(&arr != ptr);
		}

		int[3] a = [1,2,3];
		func(a, &a);
		assert(a == [9,2,3]); // changed..
		
		int[] b = [1,2,3];
		func(b, &b);
		assert(b == [9,2,3]);
	}


More information about the Digitalmars-d-learn mailing list