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指针。