20140421 常量指针与指针常量; const指针; reinterpret_cast ;const_cast作用
1、reinterpret_cast<type_id>(表达式)的作用:
type-id 必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针.type_id的作用是在赋值的时候用到
int i5=reinterpret_cast<int>(p);//前面是int,所以方括号里的也是int
#include <iostream> using namespace std; int main() { char *p="a"; int i=(int)"a"; int i2=(int)p; int i5=reinterpret_cast<int>(p);//对p不做任何改变,只是p的值以int的形式赋值给i5 cout<<p<<endl; printf("%d\n",p);//18424100 cout<<i<<endl;//18424100 cout<<i2<<endl;//18424100 cout<<i5<<endl;//18424100 return 0; }
2、常量指针和指针常量
/*指针常量或这称为const指针,表示指针本身不可修改 //*p可以修改*p = 8;(OK)//p不可以修改 p++(ERROR)*/ int a; int * const p=&a; /*常量指针或指向常量的指针或指向const对象的指针, *p不可修改 *p = 8;(ERROR),p 可以修改 p = &b (OK)*/ int a,b; const int *p = &a;
3、const_cast作用
- 常量指针被转化成非常量的指针,并且仍然指向原来的对象。
const
B b1;
B *b2 =
const_cast
<B*>(&b1);
- 常量引用被转换成非常量的引用,并且仍然指向原来的对象
B。
const
B b1;
&b3 =const_cast
<B&>(b1);