Multidimensional Arrays

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

  1. Terry

    Terry Guest

    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
    #1
    1. Advertisements

  2. Terry

    Mike Wahler Guest

    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.
    An array:

    int arry[2][3];

    is stored thus:

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

    -Mike
     
    Mike Wahler, Aug 30, 2003
    #2
    1. Advertisements

  3. 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
    #3
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.