Можно ли изменить постоянные значения во время выполнения в 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 = «что-то» будет храниться в сегменте кода и не может быть изменено во время программы.