Символы должны быть массивом 1-го указателя на структуру таблицы или двумерным массивом структуры таблицы?
stck->symbols = malloc(sizeof *(stck->symbols) * numberOfElements);
для любого значения numberOfElements
. Учитывая, что тип символов stck-> struct table **
, тип выражения *(stck->symbols)
будет struct table *
. Вы также можете написать
malloc(sizeof (struct table*) * numberOfElements);
но я предпочитаю первый метод, так как он минимизирует количество мест, которые вы должны запомнить тип.
Поскольку это C, вы не должны разыгрывать результат malloc()
, и это считается плохой практикой; если вы забудете включить stdlib.h или иным образом не иметь прототип для malloc()
в области действия, приведение будет подавлять предупреждение, предупреждающее вас о проблеме (хотя, поскольку C99 больше не позволяет неявную типизацию int, это может больше не проблема).