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
Post a Comment