# Multidimensional Arrays

Discussion in 'C Programming' started by Terry, Aug 30, 2003.

1. ### TerryGuest

Hi,

can someone plz tell me how multidimensional arrays (like a 2-D array)
are stored in memory? Are they like single dimensional arrays? Stored
sequentially in one "row", so to say?

Thanks

Terry

Terry, Aug 30, 2003

2. ### Mike WahlerGuest

Terry <> wrote in message
news:3f509baa\$...
> Hi,
>
> can someone plz tell me how multidimensional arrays (like a 2-D array)
> are stored in memory?

C doesn't really have 'multidimensional' arrays. What
looks like one is really an 'array of arrays'.

Arrays (however many 'dimensions') are stored in contigous
memory locations.

> Are they like single dimensional arrays? Stored
> sequentially in one "row", so to say?

An array:

int arry[2][3];

is stored thus:

Low High
[0][0], [0][1], [0][2], [1][0], [1][1], [1][2]

-Mike

Mike Wahler, Aug 30, 2003

3. ### Julian V. NobleGuest

Terry wrote:
>
> Hi,
>
> can someone plz tell me how multidimensional arrays (like a 2-D array)
> are stored in memory? Are they like single dimensional arrays? Stored
> sequentially in one "row", so to say?
>
> Thanks
>
> Terry

C and most modern languages store 2D arrays "row-wise". That is, if
S is the data size in storage units, and W is the number of items in
a row, the actual address of the i,j 'th item is

A[0][0] + S*(i+W*j)

of course a real C maven would express the above differently,
probably with pointers, but you see what I mean.

Fortran, BTW, stores data column-wise. This is a problem for people
who have to link compiled Fortran library functions to C or vice
versa.

--
Julian V. Noble
Professor Emeritus of Physics

^^^^^^^^^^^^^^^^^^
http://galileo.phys.virginia.edu/~jvn/

"Science knows only one commandment: contribute to science."
-- Bertolt Brecht, "Galileo".

Julian V. Noble, Aug 30, 2003