const char*, char const*, char*const 的区别;指针常量,常量指针的区别

Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:
把一个声明从右向左读:
char * const cp; cp is a const pointer to char;
const char * p;   p is a pointer to const char;
char const * p;   同上(因为C++里面没有const*的运算符,所以const只能属于前面的类型);

结论:
char * const cp     : 定义一个指向字符的const指针,即指针常量
const char* p       : 定义一个指向字符常数的指针,即常量指针
char const* p       : 等同于const char* p

指针常量
一种类型为指针的常量,即指针本身为常量,指针指向的地址不可以改变,但是指向的地址所对应的内容可以改变
指针常量的申明:Type * const pointer ;
cp = p //错误 因为这是一个指针常量,改变指向的地址了
*cp = ‘a’ // 正确 因为指向的地址的内容是可以变化的

常量指针
一种指针,指向的内容为常量;指针所指向的内容不能变,但是指向的地址可以改变
常量指针的申明:const Type *pointer / Type const* pointer;
cp = p //正确 因为这是一个常量指针,可以改变指向的地址
*cp = ‘a’ // 错误 因为指向的地址的内容是不可以变化的

你可能感兴趣的:(const char*, char const*, char*const 的区别;指针常量,常量指针的区别)