The initializer for an array is a comma-separated list of constant expressions enclosed in braces ({ }). The initializer is preceded by an equal sign (=). You do not need to initialize all elements in an array. If an array is partially initialized, elements that are not initialized receive the value 0 of the appropriate type. The same applies to elements of arrays with static storage duration. (All file-scope variables and function-scope variables declared with the static keyword have static storage duration.)
static int number[3] = { 5, 7, 2 };
The
array number contains the following values: number[0] is 5, number[1] is 7; number[2] is 2.
When you have an expression in the subscript declarator defining the
number of elements (in this case 3), you cannot have
more initializers than the number of elements in the array. static int number1[3] = { 5, 7 };
The
values of number1[0] and number1[1] are
the same as in the previous definition, but number1[2] is 0. static int number[3] = { [0] = 5, [2] = 7 };
The
array number contains the following values: number[0] is 5; number[1] is
implicitly initialized to 0; number[2] is 7. static int item[ ] = { 1, 2, 3, 4, 5 };
The
compiler gives item the five initialized elements,
because no size was specified and there are five initializers.Initializing a string constant places the null character (\0) at the end of the string if there is room or if the array dimensions are not specified.
static char name1[ ] = { 'J', 'a', 'n' };
static char name2[ ] = { "Jan" };
static char name3[4] = "Jan";
These definitions create the following elements:
Element | Value | Element | Value | Element | Value |
---|---|---|---|---|---|
name1[0] | J | name2[0] | J | name3[0] | J |
name1[1] | a | name2[1] | a | name3[1] | a |
name1[2] | n | name2[2] | n | name3[2] | n |
name2[3] | \0 | name3[3] | \0 |
static char name3[3]="Jan";
When you initialize an array of characters with a string, the number of characters in the string — including the terminating '\0' — must not exceed the number of elements in the array.
static month_days[2][12] =
{
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
static int month_days[2][12] =
{
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
};
static short grid[3] [4] = {8, 6, 4, 1, 9, 3, 1, 1};
The
initial values of grid are: Element | Value | Element | Value |
---|---|---|---|
grid[0] [0] | 8 | grid[1] [2] | 1 |
grid[0] [1] | 6 | grid[1] [3] | 1 |
grid[0] [2] | 4 | grid[2] [0] | 0 |
grid[0] [3] | 1 | grid[2] [1] | 0 |
grid[1] [0] | 9 | grid[2] [2] | 0 |
grid[1] [1] | 3 | grid[2] [3] | 0 |
static short grid[3] [4] = { [2][0] = 8, [2][1] = 6,
[2][2] = 4, [2][3] = 1 };
The
initial values of grid are: Element | Value | Element | Value |
---|---|---|---|
grid[0] [0] | 0 | grid[1] [2] | 0 |
grid[0] [1] | 0 | grid[1] [3] | 0 |
grid[0] [2] | 0 | grid[2] [0] | 8 |
grid[0] [3] | 0 | grid[2] [1] | 6 |
grid[1] [0] | 0 | grid[2] [2] | 4 |
grid[1] [1] | 0 | grid[2] [3] | 1 |