Ответ 1
char* const * pointer;
, затем
pointer -> non-const pointer to const pointer to non-const char (char* const *)
pointer[0] -> const pointer to non-const char (char* const)
pointer[0][0] -> non-const char
Если вам нужен массив, то char* const array[42] = {... };
,
Если вы не знаете размер массива во время компиляции и должны выделять массив во время выполнения, вы можете использовать указатель, тогда
int n = ...;
char* const * pointer = new char* const [n] { ... };
...
delete[] pointer;
Как вы можете видеть, вам необходимо выполнить распределение и освобождение вручную. Даже вы сказали, что вам не нужен std::vector
но для mordern C++ использование std::vector
или умных указателей более уместно.