Звучит так, как будто вы на правильном пути.
LList **array;
array = malloc(num_ptrs * sizeof(LList*));
array
теперь является массивом указателей на LList
, а такие элементы, как array[3]
, будут указателями на LList
.
Массивы и указатели очень похожи в C (но не идентичны!), Как показано на классическом примере: *(array + 2)
в основном эквивалентно array[2]
.
Edit:
Когда вам нужно изменить размер таблицы, вам просто нужно realloc
дополнительное пространство:
LList **new_array;
new_array = realloc(old_array, new_size * sizeof(LList*));
new_array
и old_array
могут впоследствии или не совпадать с указателем, но в любом случае new_array
гарантированно будет указателем на достаточно места для хранения нового массива (или NULL
, если память не могла должно быть выделено)
2-е редактирование:
Как упоминалось в user411313, если вам нужен фактический указатель на массив, вам нужно взять адрес массива:
LList ***p_array;
p_array = &array;