Ordinarily, you cannot mix in the same array objects belonging to two different structure types, because C requires you to define arrays in terms of exactly one data type. The rationale is that the C compiler must allocate just the right amount of storage for each array element, which it cannot do if the element types are not known at compile time.