Study Tools

2D Arrays

Problems and Solutions 1

Problems and Solutions 2

Like one dimensional arrays, arrays of multiple dimensions easily
lend themselves to use in loops to access the
data elements in the array. Rather than using a single loop to access
the data it will usually help to use a nested loop. More
generally, you will normally use n loops for an n-dimensional array.

To illustrate how you might use a nested loop construct to go through
all of the data a two-dimensional array, we will show how you
might initialize a tic-tac-toe board. First assume that you have the
following type defined for piece.

typedef enum {
EMPTY,
X,
O
} ttt_piece_t;

Now we can declare an array to represent the board. It
should have the appropriate number of rows and columns.

piece_t board[NUM_ROW][NUM_COL]

What remains is to loop through all of the cells in the
array. You can imagine doing this by going through each row
successively and within each row going across each of the columns and
initializing each cell. If this is the approach you might use an
outer for loop to iterate through the rows. Whatever is
inside that for loop will be done on each row. The action we want to
perform on each row is to iterate across each column. This
action corresponds to the inner for loop below:

We could just as easily have had the outer loop
iterate across the columns and the inner loop iterate down the rows.
Both work just as well when you merely want to perform
some action on all of the cells. There are other cases where
you might want to go through the two dimensional array in one manner as
opposed to the other, depending on the task.