to! converting 1D to 2D array

Marc Schütz" <schuetzm at gmx.net> Marc Schütz" <schuetzm at gmx.net>
Sat Mar 22 05:24:28 PDT 2014


On Friday, 14 March 2014 at 19:24:21 UTC, Chris Williams wrote:
> In D, an array is a struct (struct Array), with an address and 
> a length value. A multi-dimensional array is an Array with an 
> address pointing to an array of Arrays. So with an int[2][2] 
> array, you have a layout like:
>
> @1000 Array(address=1016, length=2)
> @1016 [Array(address=1048, length=2),Array(address=1056, 
> length=2)]
> @1048 [1,2]
> @1056 [3,4]

This is not true; you need to distinguish between fixed-size and 
dynamically sized arrays. It's better to call the latter "slices" 
to avoid the confusion.

Fixed-size arrays are value types, there are no 
references/addresses involved in storing them. So this:

int[2][2] a;

always has the following layout:

@1000 [1,2]
@1008 [3,4]

You layout would be correct for this example:

int[][] = [[1,2],[3,4]];


More information about the Digitalmars-d-learn mailing list