<分区>
我正在试验 const 指针。
#include <bits/stdc++.h>
using namespace std;
int main()
{
const int i=4;
const int *const p=&i;
int *p1=const_cast<int*>(p);
*p1=10;
cout<<p<<" "<<p1<<" "<<&i<<endl;
cout<<i<<" "<<*p1<<endl;
}
我知道使用 const_cast
会导致未定义的行为,当所讨论的对象是 const(如本例中的 i)时。但在执行代码后,i 的值仍然是 4,*p1
的值是 10,而 p
p1
ans &i 的值
是相同的,即 p1 指向 i 的位置,但取消引用它会给出一些其他值。它是如何发生的?
编译:g++ 4.8.1 和 clang++ 3.3。