По определению Array - это набор похожих типов данных. Так что нет никакого прямого пути, которым вы могли бы иметь массив указателей на разные типы данных.
Одним из способов достижения этого является type casting
элементы массива с намеченными типами данных при обращении к элементам / снятии ссылок на них.
Чтобы узнать правильный type
при доступе к элементам, вам нужно сохранить тип при определении элемента.
Возможное решение может выглядеть так:
typedef struct
{
int type; //0 - enumDay, 1 - Struct C etc
void* data;
}mydata_t;
mydata_t myarray[10];
Назначение:
myarray[0].type = 2; //Lets assume 2 for string
myarray[0].data = "My String";
Использование:
if( myarray[0].type == 2) // is it a string?
{
printf("This is the string :%s \n",(char*)myarray[0].Data);
}