Можно ли изменить постоянные значения во время выполнения в C/C++?
Мы всегда считали, что не можем изменить константу. потому что они ПОСТОЯННЫ. Но знаете что? Мы можем изменить их. Взгляните на этот фрагмент кода.
const char* str = "this is constant"; char* game = "You wrong"; char* my_ptr = NULL; my_ptr = &str; printf("This is my value: %s\n", str); *my_ptr = game; printf("This is my value: %s\n", str);
Давайте погрузимся в код построчно:
В строке 1 мы определили константную строку и присвоили ей «это константа».
2. Мы определили еще одну строку под названием game со значением Вы ошиблись.
В строках 3 и 4 мы определили указатель, указывающий на адрес str.
Давайте напечатаем начальное значение str, а затем изменим значение адреса, назначив игру значению адреса.
Теперь вы можете видеть, что значение было изменено.
Обратите внимание: если вы используете компилятор C++ (C11, C14 и т. д.), вы столкнетесь с ошибкой компиляции:
error: assigning to 'char' from incompatible type 'char *'; dereference with * *my_ptr = game;;
Кроме того, если вы удалите ключевое слово const, а затем попытаетесь скомпилировать код, вы снова столкнетесь с ошибкой. Потому что в стандарте C++ char* str = «что-то» будет храниться в сегменте кода и не может быть изменено во время программы.