通过非常量指针修改 const
考虑以下代码:
<code class="cpp">const int e = 2; int* w = (int*) &e; // (1) cast to remove const-ness *w = 5; // (2) cout << *w << endl; // (3) outputs 5 cout << e << endl; // (4) outputs 2 cout << "w = " << w << endl; // (5) w points to the address of e cout << "&e = " << &e << endl;</code>
In (1 ), w 指向 e 的地址。在(2)中,该值更改为5。但是,当显示*w和e的值时,它们的值是不同的。但如果打印指针 w 和 e 的地址,它们的值是相同的。
为什么 e 变成了 5,仍然包含 2?它们是否存储在单独的位置?还是临时的?但为什么w指向的值仍然是e的地址呢?
回答
一旦修改了const值,就进入了未定义的行为领域。然而,推测:
以上是为什么通过非常量指针修改'const”值会导致未定义的行为,但仍然为指针和原始变量打印不同的值?的详细内容。更多信息请关注PHP中文网其他相关文章!