Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Изменение строки по указателю |
Автор: Hukuma 2.11.2010, 18:15 | ||||
Здравствуйте. Объясните, пожалуйста, следующее поведение, я туманно представляю себе почему так получается, но сам себя убедить в этом не могу. Мне нужно в функции f изменить строку s так, чтобы при выводе на экран в функции main строки str её значение было "str2"
в этом случае вывод: str=str1 Если же написать так
то вывод будет str=str2 - то, что мне нужно конкретно я не понимаю, почему первый вариант кода не срабатывает, я же передаю указатель на строку, затем этот же указатель изменяю в функции -> строка в функции main тоже должна измениться. Или ошибка моих рассуждений в том, что когда я подаю указатель на строку в функции f, а затем записываю новое значение в строку, на которую он указывает, то я изменяю копию указателя, которая передается в функцию f? Я же его не разыменовываю -> не обращаюсь к участку памяти, на который указывает указатель s в функции f? я примерно так объясняю себе то, почему первый вариант не срабатывает, но уверенности нет. Объясните, пожалуйста мне. |
Автор: bsa 2.11.2010, 18:23 | ||||
Строка 9 твоего кода содержит ошибку, на которую компилятор ради совместимости со старым кодом не особо ругается. Строка в двойных кавычках называется строковым литералом и является КОНСТАНТОЙ (т.е. МЕНЯТЬ ее НЕЛЬЗЯ). Поэтому твою 9-ю строку нужно переписать так:
Добавлено через 1 минуту и 3 секунды Кстати, чтобы все заработало, достаточно написать так:
|
Автор: Hukuma 2.11.2010, 18:57 |
bsa, спасибо за ответ, покопался ещё немного и разобрался. Спасибо за замечание насчет const char, я действительно совсем забыл про это. |