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);
posted @ 2014-04-21 19:57  yexuannan  阅读(265)  评论(0编辑  收藏  举报