Есть два способа хранения данных, например 32 байта.Разница в этих двух версиях:
// version 1
char *firstName = new char[32];
// version 2
char firstName[32];
заключается в том, что для версии 1 пространство, в котором ваши данные распределены в heap , необходимо освободить до завершения программы, тогда как в версии 2место в стеке .И то и другое даст вам переменную, которая указывает на первый байт доступного пространства, и в обоих случаях это пространство составляет 32 байта.Люди будут утверждать, что есть причины, по которым вы можете выбрать один из них , но это другая история.
sizeof (firstName)
Интересным моментом является то, что sizeof вернет, и это размер указателя на символ (зависит от вашей системы и компилятора) для версии 1 и 32 для версии 2. Имейте в виду, что упоминал другой пользователь, передавая firstName функция превращает ее в указатель.