I am trying to change the value of a const int
variable (should not be done ideally). This is how I did it.
const int x{5}; //line 1
int* y{const_cast<int*>(&x)}; //line 2
std::cout<<y<<" "<<&x<<endl; //line 3
*y = 10; //line 4
std::cout<<*y<<" "<<x<<endl; //line 5
std::cout<<y<<" "<<&x<<endl; //line 6
At line 2, I took away the constness of the constant variable x
and made y
point to it.
At line 3, the memory address of y
and x
are same.
But, after I changed the value of y
at line 4, line 5 prints *y=10
and x=5
, and the weird thing is line 6 still shows the same memory address of y
and x
.
Can anyone help me understand how things are working internally?
I only want to understand the cause of how the program shows 2 different values at the same memory location.