指针和const限定符

1、指向const对象的指针

     const int *cptr;    // cptr 定义为一个指向int型const对象的指针

const限定了cptr指针所指的对象类型,而非cptr本身。也就是说cptr本身并不是const。但是由于指针所指对象为const型,所以不允许用指针来改变所指的const值。为了保持这个特性,C++ 语言强制要求指向const对象的指针也必须具有const特性,也就是cptr的值可以改变,但只能指向另一个const对象。

2、const 指针

     int errNum = 0;

     int *cosnt curErr = &errNum;   // curErr 为指向int型对象的const指针

和其它const对象一样,const指针的值不能修改,这就意味着不能使 curErr 指向其它对象。

3、指向const对象的const指针

     const double pi = 3.14159

     const double *const pi_ptr = &pi     // pi_ptr定义为指向const对象的const指针

4、指针和 typedef

     typedef string *pstring;

     const pstring cstr;

错误的理解:const string *cstr,const pstring是一种指针,指向string类型的const对象。

错误原因在于将 typedef 当做文本拓展了。声明const pstring时,const修饰的是pstring的类型,这是一个指针。因此,

正确的理解:cstr被定义为指向string类型的const指针。

posted @ 2016-06-23 09:22  wenbuhua  阅读(244)  评论(0编辑  收藏  举报