Ошибка в указателе

Рейтинг: 0Ответов: 1Опубликовано: 02.04.2015

Подскажите, пожалуйста, в чём ошибка:

char* pStr="Hello";
*pStr='d';

Ответы

▲ 2Принят

В указателе нет ошибки. Указатель честно указывает на константные данные, которые, естественно, нельзя поменять. На некоторых компиляторах поменять можно, но возможны разнообразные спецэффекты.

Что же делать? Все зависит от того, что хочется. Если после прививания строка pStr должна указывать на символ 'd', тогда так

char* pStr="Hello"; pStr="d";

Если хочется поменять первый символ, тогда так

char* pStr=strdup("Hello"); *pStr='d';
//.....
free(pStr);

Но в метках стоит с++, а не си. Поэтому, может просто воспользоваться плюсовыми строками? И проще и правильнее.

std::string Str = "Hello";
Str[0] = 'd';