#include<iostream>
using namespace std;
int main(){int a=2,b=3,*q;const int *p=&a;q=const_cast<int*>(p); //将常量指针转化为非常量指针,并且仍指向原来对象*q=b;cout<<"a的值:"<<a<<endl;cout<<"*p的值:"<<*p<<endl;cout<<"*q的值:"<<*q<<endl;cout<<"b的值:"<<b<<endl;cout<<"a的地址:"<<&a<<endl;cout<<"*p的地址:"<<p<<endl;cout<<"*q的地址:"<<q<<endl;cout<<"b的地址:"<<&b<<endl;
}
运行结果:
a的值:3
*p的值:3
*q的值:3
b的值:3
a的地址:0x6ffdfc
*p的地址:0x6ffdfc
*q的地址:0x6ffdfc
b的地址:0x6ffdf8
a和b的地址不一样,b的值赋给*q, *q->*p->a,地址一样
#include<iostream>
using namespace std;
int main(){int a=2,b=3,*q;const int *p=&a;q=const_cast<int*>(p);q=&b;cout<<"a的值:"<<a<<endl;cout<<"*p的值:"<<*p<<endl;cout<<"*q的值:"<<*q<<endl;cout<<"b的值:"<<b<<endl;cout<<"a的地址:"<<&a<<endl;cout<<"*p的地址:"<<p<<endl;cout<<"*q的地址:"<<q<<endl;cout<<"b的地址:"<<&b<<endl;
}
运行结果:
a的值:2
*p的值:2
*q的值:3
b的值:3
a的地址:0x6ffdfc
*p的地址:0x6ffdfc
*q的地址:0x6ffdf8
b的地址:0x6ffdf8
q的地址发生改变,b的地址->q