#include<iostream>
using namespace std;
int main()
{
const float PIE=3.1415926535;
float *pie=const_cast<float*>(&PIE);
*pie=7.9;
cout<<"float:"<<PIE<<endl;
return 0;
}
Так что я хочу здесь сделать это, чтобы изменить const PIE, наведя его адрес в указатель не const, а затем изменит PIE через этот указатель. Я не знаю, почему он не работает, или я не так здесь?Изменение константного идентификатора в C++
Спасибо за ответ. позвольте мне сказать об одном здесь. Во время компиляции программы не будет выделено хранилище для переменной const, которая будет определена ... Она просто будет помещена в список, созданный компилятором как макросы. В моем случае я пытаюсь получить адрес этой постоянной переменной .... Так вот где компилятор будет выделять некоторое хранилище для этой переменной. И это неопределенное поведение действительно .... Итак, что вы подразумеваете под «прямо»? прямо откуда? Вы хотите сказать прямо из списка, который был создан компилятором для определенных постоянных переменных? –
@Ankitsinghkushwah Для констант родных типов (int, float и т. Д.) Компилятор часто не выделяет конкретное хранилище для значения, но использует значение непосредственно в коде (именно поэтому вы можете использовать значения 'const int' как размеры массива или в деловые заявления). Поскольку вы берете адрес постоянной переменной, компилятор должен будет выделить для него некоторое хранилище, но это хранилище может находиться в разделе памяти только для чтения. «Прямо» я имел в виду, что компилятор будет передавать «3.1415926535» в 'cout', а не значение' PIE'. – 1201ProgramAlarm