Форум программистов, компьютерный форум CyberForum.ru

Почему при изменении литерала const char* программа падает? - C++

Восстановить пароль Регистрация
 
Хрисипп
 Аватар для Хрисипп
17 / 27 / 8
Регистрация: 09.02.2016
Сообщений: 212
26.08.2016, 14:06     Почему при изменении литерала const char* программа падает? #1
точнее литерала. ладно, если бы выходил за пределы
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
26.08.2016, 14:09     Почему при изменении литерала const char* программа падает? #2
Где код?
Babysitter
 Аватар для Babysitter
78 / 103 / 34
Регистрация: 23.11.2015
Сообщений: 315
Завершенные тесты: 1
26.08.2016, 14:09     Почему при изменении литерала const char* программа падает? #3
а вот так не падает, странно, да?
C++
1
2
3
    char tmp[] = "hello";
    const char *x = tmp;
    tmp[0] = 'H';
HighPredator
 Аватар для HighPredator
5342 / 1725 / 320
Регистрация: 10.12.2010
Сообщений: 5,108
Записей в блоге: 3
26.08.2016, 14:09     Почему при изменении литерала const char* программа падает? #4
Код в студию
HelicopterK52
633 / 176 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
26.08.2016, 14:11     Почему при изменении литерала const char* программа падает? #5
Цитата Сообщение от Хрисипп Посмотреть сообщение
точнее литерала.
Например, потому что литерал может быть сохранен в read-only памяти?
И вообще, если оно константно, то не нужно его менять.
Babysitter
 Аватар для Babysitter
78 / 103 / 34
Регистрация: 23.11.2015
Сообщений: 315
Завершенные тесты: 1
26.08.2016, 14:13     Почему при изменении литерала const char* программа падает? #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
распространенные ошибки
Хрисипп
 Аватар для Хрисипп
17 / 27 / 8
Регистрация: 09.02.2016
Сообщений: 212
26.08.2016, 14:18  [ТС]     Почему при изменении литерала const char* программа падает? #7
Цитата Сообщение от HighPredator Посмотреть сообщение
Код в студию
Цитата Сообщение от John Prick Посмотреть сообщение
Где код?
C++
1
2
3
4
5
6
7
char* e(char* v){
    v[0]='a';
    return v;
}
int main(){
    cout<<e("12");
}
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Например, потому что литерал может быть сохранен в read-only памяти?
я вот про это и подумал
HelicopterK52
633 / 176 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
26.08.2016, 15:19     Почему при изменении литерала const char* программа падает? #8
Хрисипп, в Вашем коде также есть небольшая "какашка" - у Вас на литерал "указывает" не константный указатель. Такое преобразование не валидно для C++.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2016, 15:29     Почему при изменении литерала const char* программа падает?
Еще ссылки по теме:

Ошибка: Cannot convert 'char const[18]' to 'const wchar_t *' C++
C++ [Ошибка] invalid conversion from 'const char*' to 'char*' [-fpermissive]
Работа со строками - Invalid conversion from 'char' to 'const char*' C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Хрисипп
 Аватар для Хрисипп
17 / 27 / 8
Регистрация: 09.02.2016
Сообщений: 212
26.08.2016, 15:29  [ТС]     Почему при изменении литерала const char* программа падает? #9
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
у Вас на литерал "указывает" не константный указатель
да я такими вещами не занимаюсь. просто сейчас вспомнил про это и решил точно выяснить
Yandex
Объявления
26.08.2016, 15:29     Почему при изменении литерала const char* программа падает?
Ответ Создать тему
Опции темы

Текущее время: 01:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru