Some compilers, such as GCC or IBM’s compiler have a C extension that allows for a zero-extent array members of a structure to be declared:
They are very useful if you have a structure for a variable-length object. Until they are allocated the zero-extent members will not take up any memmory. When you have to allocate memory for such a structure, you can do it this way:
struct inode *ind = (struct inode*) malloc(sizeof(struct inode) + size_of_the_array);
You have to keep in mind that this is a language extension. The C99 standard only allows flexible array members, which are defined as
(without the 0) and behave somewhat differently. You can find out more about the subject in the GCC Manual.