还是把所有的情况给楼主列出来吧!希望对你有用!
1、类型:const char* p;
表示p指向const类型的对象(其实也可以指向非const对象,但是反过来非const指针不能指向const对象,原因很简单我定义一个类型就是不 想他的值,倘若让一个非const指针可以指向他那么岂不是可以通过这个指针修改它的值了?),根本目的在于为了不可以通过p改变p所指对象的值例如:
int i=0,j=0;
const int *pi=&i;//这里就是const指针指向非const对象
i=2;//ok i是非const 值可以改变
*pi=3;//错误pi是指向const对象的指针不可通过它改变指向对象的值
pi=&j;//ok,p是指向const类型的指针,而本身不是const指针,可以改变指向
2、类型:char* const p;
这时p常被叫做const指针这个const可以理解为修饰指针p,就是说p一旦指向某对象就不可以再改变指向了,因此要就定义这个const指针时必须初始化
例如
int i=0,j=0;
int * const p=&i;//ok定义时初始化
*p=1;//ok,p不是指向const对象的指针
p=&j;//错误,因为p已经指向i了不能更改指向了
3、类型 const char* const p;
就是像两个的综合:既不能通过p改变指向对象值也不可在p初始化后改变指向