Strange behavior of array
    Mike Parker via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Thu Oct 15 21:39:57 PDT 2015
    
    
  
On Friday, 16 October 2015 at 03:01:12 UTC, VlasovRoman wrote:
> Oh, thank you. Some strange solution.
D doesn't have multidimensional built-in arrays, but rectangular 
arrays. Think of it this way:
int[3] a1;
a1 is a static array of 3 ints. Indexing it returns an int. We 
can think of it like this:
(int)[3]
On the same lines:
int[3][4] a2;
a2 is a static array of 4 static arrays of 3 ints. In other words:
(int[3])[4].
Therefore, int[0] returns the first int[3], int[1] the second, 
and so on.
int[0][1] returns the second element of the first int[3].
Rikki's solution to your problem was to reverse the indexes when 
reading the array. But if you want to index it just as you would 
in C or C++, you should reverse the indexes in the declaration. 
Where you declare int[rows][columns] in C, you would declare 
int[columns][rows] in D, then reading from them is identical.
    
    
More information about the Digitalmars-d-learn
mailing list