Возможно, одним из решений является использование отдельного массива флагов. Когда вы назначаете один из элементов, установите флаг в логическом массиве.
Вы также можете использовать указатели. Вы можете использовать нулевые указатели для представления данных, которые еще не были назначены. Я сделал пример ниже:
int * p_array[3] = {NULL,NULL,NULL};
p_array[0] = malloc(sizeof(int));
*p_array[0] = (int)0;
p_array[2] = malloc(sizeof(int));
*p_array[2] = (int)4;
for (int x = 0; x < 3; x++) {
if (p_array[x] != NULL) {
printf("Element at %i is assigned and the value is %i\n",x,*p_array[x]);
}else{
printf("Element at %i is not assigned.\n",x);
}
}
Вы можете создать функцию, которая выделяет память и устанавливает данные, и другую функцию, которая работает как функция isset в PHP, протестировав для вас NULL.
Надеюсь, это поможет вам.
Редактировать: Убедитесь, что память освобождена после того, как вы закончили. Другая функция может использоваться для освобождения определенных элементов или всего массива.
Я использовал указатели NULL прежде, чтобы показать, что данные еще не созданы или должны быть воссозданы.