Ответ
C-строка — это массив элементов типа char, завершающийся нуль-терминатором (' '). Это низкоуровневое представление строки, унаследованное из языка C и широко используемое в C++ для совместимости и работы с системными API.
Ключевые характеристики:
- Длина строки определяется позицией первого нуль-символа, а не размером массива.
- Не хранит свою длину отдельно, что требует её вычисления за O(n) с помощью
strlen. - Подвержена ошибкам переполнения буфера, если операции не контролируют границы массива (например,
strcpy,sprintf).
Пример объявления и использования:
// Строковый литерал неявно создаёт массив char с нуль-терминатором
const char* greeting = "Hello"; // Массив: {'H','e','l','l','o',' '}
// Массив, инициализированный строковым литералом
char buffer[20] = "Hello"; // Оставшиеся элементы инициализируются ' '
// Ручное формирование C-строки
char path[256];
strcpy(path, "/home/user/");
strcat(path, "file.txt"); // path теперь содержит "/home/user/file.txt "
Сравнение с std::string:
В современном C++ для работы со строками предпочтительнее использовать std::string из <string>, который управляет памятью, хранит длину и предоставляет безопасный интерфейс. C-строки необходимы при взаимодействии с C-библиотеками, системными вызовами или API, ожидающими const char*.