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