Contents|Index|Previous|Next

Arrays of Length Zero

Zero-length arrays are allowed in GNU C. They are very useful as the last element of a structure which is really a header for a variable-length object.

    struct line {
       int length;
       char contents[0];
    };

    {
       struct line *thisline = (struct line *)
          malloc (sizeof (struct line) + this_length);
       thisline->length = this_length;
    }

In standard C, you would have to give contents a length of 1, which means either you waste space or complicate the argument to malloc.