How does C allocate data items in a multidimensional array? -


I would like to know how to allocate data items of a multi-dimensional array, and if their allocation is consistent in machines .

I know that, at the lowest level, the data items are neighbors, but I do not know how they are organized ahead.

For example, if I can allocate a 3D array as <3> 3d [3] [5] [6] , can I assume that And (three d [4] [2] [5]) + 1 == & amp; (Threed [4] [3] [0]) ? On all machines?

Thank you in advance for your help.

Elements are stored in order, so elements with the final dimension are near, however, the elements between the rows ( As shown in your example) is not guaranteed to be closest, it depends on how the initial memory has been allocated.

  #include & lt; Malloc.h & gt; # Include & lt; Stdio.h & gt; # Include & lt; Stdlib.h & gt; // Only elements in the same line are guaranteed that they have multiple mellocons zero main (zero) {// 3 rows, 4 column int * one [3]; ([Line] = (integer *) malloc (4 * size (int)) for (infinite row = 0; row & lt; 3; line ++); } // All elements are guaranteed to be musical in one line leading order. Zero main (zero) {// 3 rows, 4 column int * one [3]; Int * buf = (int *) malloc (3 * 4 * size (int)); One [row] = buff + 4 * line for (int row = 0; row and lt; 3; line ++); Emphasis ((and [1] [3] + 1) == and [2] [0]); }  

Comments

Popular posts from this blog

MySql variables and php -

url rewriting - How to implement the returnurl like SO in PHP? -

Which Python client library should I use for CouchdB? -