Home > Article > Backend Development > Why does a modified constant variable retain its original value at compile time, even though a non-const pointer allows for modification of its actual value?
Modifying a Constant through a Non-Const Pointer
In the given code, a constant variable e is initialized to 2. A non-const pointer w is then cast to point to the address of e, implicitly removing the const-ness of the variable. By dereferencing w and assigning a new value to it, the value at the address of e is modified from 2 to 5.
However, when the values of *w and e are printed, they appear different:
<code class="cpp">cout << *w << endl; // Outputs 5 cout << e << endl; // Outputs 2</code>
This behavior can be explained by considering the different ways in which *w and e are evaluated:
Therefore, the difference in values arises from the distinct evaluation times of *w and e. Despite the modification to the value at the address of e, the constant variable itself remains unmodified at compile time. However, the non-const pointer w allows for modification of the value at the address it points to, resulting in the output of 5 for *w.
The above is the detailed content of Why does a modified constant variable retain its original value at compile time, even though a non-const pointer allows for modification of its actual value?. For more information, please follow other related articles on the PHP Chinese website!