As mentioned above, you must initialize your arrays or they will contain
garbage. There are two main ways to do so. The first is by assigning
values to array elements individually, either as shown in the example
below, or with for loops. (See Arrays and for loops, above.)
Here is a small program that uses the above initialization:
#include <stdio.h>
int main()
{
int row, column;
int my_array[3][3] =
{
{10, 23, 42},
{1, 654, 0},
{40652, 22, 0}
};
for (row = 0; row <=2; row++)
{
for (column = 0; column <= 2; column++)
{
printf("%d\t", my_array[row][column]);
}
printf("\n");
}
printf("\n");
return 0;
}
The internal curly brackets are unnecessary, but they help to
distinguish the rows of the array. The following code has the same
effect as the first example:
Using any of these three array initializations, the program above
will print the following text:
10 23 42
1 654 0
40652 22 0
Note 1: Be careful to place commas after every array element except the last one
before a closing curly bracket (}). Be sure you also place a
semicolon after the final curly bracket of an array initializer, since
here curly brackets are not delimiting a code block.
Note 2: All the expressions in an array initializer must be constants,
not variables; that is, values such as 235 and 'q' are acceptable,
depending on the type of the array, but expressions such as the integer variable my_int
are not.
Note 3: If there are not enough expressions in the array initializer
to fill the array, the remaining elements will be set to 0 if the array is static,
but will be filled with garbage otherwise.