Создать указатель на статический массив в языке C++ можно, как минимум, двумя способами:
char a[10];
и
char *a = new char[10];
В чем между ними разница? В обоих случаях создается создается массив из 10 элементов char. Да, язык C++ таков, что в первом случае звездочки в типе создаваемого значения нет в синтаксисе команды, но из-за того что создается именно массив, тип у переменной a будет типом char[10], который в большинстве контекстов будет неявно преобразовываться к типу char*.
Самое главное отличие этих двух команд состоит в том, что в первом случае массив создается на стеке. При выходе переменной a из области видимости, эта переменная вместе со своим содержимым будет автоматически удалена.
Во втором случае массив будет выделен в куче. Причем, можно выделять массив произвольной длинны, даже если длинна неизвестна на этапе компиляции. То есть, вместо 10 можно написать какую-нибудь целочисленную переменную. Самый правильный тип для такой переменной - std::size_t.
За удалением данного массива надо следить вручную. Для удаления массива используется следующая команда:
delete[] a;
Здесь следует обратить внимание, что при удалении массива надо обязательно не забывать указывать квадратные скобки. Если их забыть, и написать "delete a", то программа скомпилируется без ошибок (так было, как минимум, в старых компиляторах), и будет удален только первый элемент массива, что приведет к утечке памяти.