Когда люди говорят «указатель на массив X», обычно они действительно имеют в виду указатель на первый элемент массива X. Типы указатель на массив очень неудобны для использования вC, и обычно используются только при использовании многомерного массива.
С учетом вышесказанного, тип, который вам нужен, это просто char **
:
char **t = malloc(num_elems * sizeof *t);
Использование указателя на массивтип, это будет выглядеть следующим образом:
char *(*t)[num_elems] = malloc(sizeof *t);
Обратите внимание, что это будет тип массива переменной длины C99, если num_elems
не является целочисленным константным выражением в формальном смысле этого термина.