Next: Flexible Array Fields, Previous: const Fields, Up: Structures   [Contents][Index]
GNU C allows zero-length arrays.  They are useful as the last element
of a structure that is really a header for a variable-length object.
Here’s an example, where we construct a variable-size structure
to hold a line which is this_length characters long:
struct line {
  int length;
  char contents[0];
};
struct line *thisline
  = ((struct line *)
     malloc (sizeof (struct line)
             + this_length));
thisline->length = this_length;
In ISO C90, we would have to give contents a length of 1, which
means either wasting space or complicating the argument to malloc.