4 If the size is not present, the array type is an incomplete type. If the size is * instead of
being an expression, the array type is a variable length array type of unspecified size,
which can only be used in declarations with function prototype scope;
122)
such arrays are
nonetheless complete types. If the size is an integer constant expression and the element ype has a known constant size, the array type is not a variable length array type;
otherwise, the array type is a variable length array type.
8 EXAMPLE 2 Note the distinction between the declarations
extern int *x;
extern int y[];
The first declares x to be a pointer to int; the second declares y to be an array of int of unspecified size
(an incomplete type), the storage for which is defined elsewhere.