You could make an array of pointers to Employee.
Let's say that Employee is 64 bytes long, so if you create an array of 3 that array would be 192 bytes long, and if you would need an array of three Director that would be 2 extra bytes per struct, so your whole array would be 198 bytes long and that is the cause that you can't have the array as you want it.
If you create the array as pointers to Employee, that's what the array will contain, pointers only, so it would be three spaces of 4 bytes = 12 bytes, and as the pointer always is the same size you will be able to store pointers to structures of different sizes.
You will only have to take some considerations:
- Each item will need to be de-referenced.
- You'll need to ask for some dynamic memory for each item (malloc) or your items will be lost when the function ends.
- Be very careful to free that memory when you don't need it anymore.
- Verify that the pointer isn't null before de-referencing it or your program will crash.
I hope this is useful, good luck!