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 double
s.
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 double
s, 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
char
s).
double aa[5][10];
declares aa
as an array of 5 elements, each of which is an
array of 10 double
s. 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]