Я понял, что если я определяю const int в тело функции C++, а затем используйте арифметику адреса, чтобы изменить значение константы (ее в стеке, не так ли?). я получил этот код:const в теле функций C++
const int a = 10;
int b = 100;
int * c = &b;
c++;
cout << "&a: " << &a << endl;
cout << " c: " << c << endl;
*c = 100500;
cout << " a: " << a << endl;
cout << "*c: " << *c << endl;
и я получил этот выход
&a: 0x7ffff63866a8
c: 0x7ffff63866a8
a: 10
*c: 100500
Таким образом, адреса совпадают, но значения различны. Может ли кто-нибудь объяснить мне этот результат? Благодаря! стр. я пробовал на GCC, Clang и VS
Изменение константы anyways - это неопределенное поведение в стандартах. –
Вы только что вызвали неопределенное поведение. –
Значение 'c' post-increment не определено поведением, ни по значению, ни по разыменованию. Если бы 'b' был массив (даже массив из одного), значение было бы определено, но разыменование все равно не было (в случае с одной длиной). – WhozCraig