Next: , Previous: , Up: Structures   [Contents][Index]

15.10 Arrays of Length Zero

GNU C allows zero-length arrays. They are useful as the last field 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.