Next: Strings, Previous: Accessing Array Elements, Up: Arrays [Contents][Index]
To make an array declaration, write [length] after the
name being declared. This construct is valid in the declaration of a
variable, a function parameter, a function value type (the value can’t
be an array, but it can be a pointer to one), a structure field, or a
union alternative.
The surrounding declaration specifies the element type of the array;
that can be any type of data, but not void or a function type.
For instance,
double a[5];
declares a as an array of 5 doubles.
struct foo bstruct[length];
declares bstruct as an array of length objects of type
struct foo. A variable array size like this is allowed when
the array is not file-scope.
Other declaration constructs can nest within the array declaration construct. For instance:
struct foo *b[length];
declares b as an array of length pointers to
struct foo. This shows that the length need not be a constant
(see Arrays of Variable Length).
double (*c)[5];
declares c as a pointer to an array of 5 doubles, and
char *(*f (int))[5];
declares f as a function taking an int argument and
returning a pointer to an array of 5 strings (pointers to
chars).
double aa[5][10];
declares aa as an array of 5 elements, each of which is an
array of 10 doubles. This shows how to declare a
multidimensional array in C (see Multidimensional Arrays).
All these declarations specify the array’s length, which is needed in these cases in order to allocate storage for the array.
Next: Strings, Previous: Accessing Array Elements, Up: Arrays [Contents][Index]