Ошибка в указателе
Подскажите, пожалуйста, в чём ошибка:
char* pStr="Hello";
*pStr='d';
Источник: Stack Overflow на русском
Подскажите, пожалуйста, в чём ошибка:
char* pStr="Hello";
*pStr='d';
В указателе нет ошибки. Указатель честно указывает на константные данные, которые, естественно, нельзя поменять. На некоторых компиляторах поменять можно, но возможны разнообразные спецэффекты.
Что же делать? Все зависит от того, что хочется. Если после прививания строка pStr должна указывать на символ 'd', тогда так
char* pStr="Hello"; pStr="d";
Если хочется поменять первый символ, тогда так
char* pStr=strdup("Hello"); *pStr='d';
//.....
free(pStr);
Но в метках стоит с++, а не си. Поэтому, может просто воспользоваться плюсовыми строками? И проще и правильнее.
std::string Str = "Hello";
Str[0] = 'd';