mrjbom
@mrjbom

String или char*?

Сейчас склоняюсь к использованию char массивов, но что же лучше использовать?
И какое различие между char* и char[]?
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 2
@zuko3d
Для хранения текста лучше используйте std::string. Не придётся следить за памятью и проще обращаться к конкретным элементам, например к последнему символу.

Итерация по всем символам тоже удобнее:
string str = "hello!";
for(auto& c: str) {
    c += 1;
}
cout << str << endl;
Ответ написан
@res2001
Developer, ex-admin
И какое различие между char* и char[]?

char* str1 = "Hello world!";
char str2[] = "Hello world!";
Разница между str1 и str2 в том, что str1 - это lvalue, а str2 - нет.
Т.е. с str1 вы можете, например сделать str1 = str1 + 1; а с str2 нет.

С точки зрения памяти:
В случае str1 в памяти хранится 2 сущности: 1) сама строка "Hello world!" 2) указатель, которому присваивается адрес строки. Поэтому вы можете присвоить другое значение указателю.
В случае str2 указателя в памяти нет, есть только строка. Адрес строки знает компилятор и использует его когда нужно. Но присвоить новое значение этому адресу уже не возможно.
Можно считать, что char str[]; это то же что и char * const str;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы