Подтвердить что ты не робот

Выделите место для char

Строковая конструкция получила пространство для данных, выполнив

new char[strlen(cp)+1];

Так как в строке есть только strlen(cp) символов, что такое дополнительный байт для?

4b9b3361

Ответ 1

Для специальный '\0' char, который указывает конец строки.

(Помните, строки C-стиля представляют собой массивы с нулевым завершением).

Дополнительные замечания:

  • strlen не учитывает '\0' (для этого вам нужен этот дополнительный байт).
  • strcpy копирует '\0'.
  • char str[7] = "String"; - добавляет '\0' самостоятельно.
  • char str[] = {'S','t','r','i','n','g'} - не добавляет '\0'.
  • char str[7] = {'S','t','r','i','n','g'} - добавит '\0'.

Ответ 2

В строках на основе C всегда есть специальный символ в конце строки '\0', которому также нужен дополнительный байт. Вот почему нам нужен дополнительный символ, и нам нужен массив strlen(str)+1 для хранения строки.