const_cast: тот же адрес, но другое значение? [Дубликат]
На этот вопрос уже есть ответ:
Два разных значения при одном и том же адресе памяти 6 ответовНовичок в C ++ и изучение const_cast - запутайтесь в приведенном ниже коде:
int main(){
const int j = 1;
int * p = (int *)(&j);
cout << j << ' ' << *p << endl;
cout << &j << ' ' << p << endl;
*p = 2;
cout << j << ' ' << *p << endl;
cout << &j << ' ' << p << endl;
const int k = 1;
int * q = const_cast<int*>(&k);
cout << k << ' ' << *q << endl;
cout << &k << ' ' << q << endl;
*q = 2;
cout << k << ' ' << *q << endl;
cout << &k << ' ' << q << endl;
return 0;
}
Выходы
1 1
00A2FD9C 00A2FD9C
1 2
00A2FD9C 00A2FD9C
1 1
00A2FD84 00A2FD84
1 2
00A2FD84 00A2FD84
Может ли кто-нибудь сказать мне, почему адреса (& i и p, или & j и q) одинаковы, но значения (i и * p или j и * q) разные? Я использую Visual Studio 2013RC.