Хочу сделать изменение любого выбранного символа в массиве через указатели.
char *str = "Hello";
*static_cast<char*>( (str + sizeof(char) * 1) ) = 'K';
Но ничего не выходит, как можно такое реализовать? и вообще можно ли? Суть в том чтобы указать на нужный символ, найти его адрес в памяти и по этому адресу заменить значение.
В C++ (в отличии от C) строковые литералы имеют тип константных символьных массивов. Поэтому правильно будет написать
const char *str = "Hello";
И в C++, и в C любая попытка изменить строковый литерал ведет к неопределенному поведению программы.
Вы могли бы определить символьный массив, инициализировав его строковым литералом. Например,
char str[] = "Hello";
Тогда бы вы могли написать просто
*( str + 1 ) = 'K';
Не имеет смысла использовать приведение типов static_cast<char *>, так как выражение str + sizeof(char) * 1 уже имеет тип char * и эквивалентно выражению str + 1.
Выражение sizeof(char) всегда равно 1.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей