const char*类型是指向常量的指针,不能修改其指向的内容,当可以修改其指向的地址。
例1:
char ch[5]="lisi"; //定义一字符串ch[],并赋值
const char* pStr=ch; //定义一常量指针pStr,将ch赋给pStr
注:ch[]定义时须对其进行赋值,字符长度为5,最后一位为"\0"表示结束。
在对pStr赋值时相当于将ch[]的首地址给pStr,因为const char*类型得指针变量只可以修改其本身的值,即变量保存的内存地址。
因此该变量的值可以改变,但其指向的地址的内容不能改变。
如:*pStr="jiliang"; //错误的,因为其直接改变了内容,所以无法将"jiliang"赋值给ch[];
pStr="jiliang"; //正确的,因为其改变的是地址值,即pStr保存的是="jiliang"的首地址。
我们无法通过pStr来修改其指向地址的内容,但可以通过ch[]来修改内容。
使用:利用指针类型来传递参数时,可以定义为const char*类型,保持内容的一致性。
char* const类型是一个指针常量,可以修改地址指向的内容,但不可以修改其地址值。
例2:
char ch[5]="lisi"; //定义一字符串ch[],并赋值
const char* pStr=ch; //定义一指针常量pStr,将ch赋给pStr
注:对于指针常量,必须在定义时对其赋值。指针常量表示指针本身是常量,即地址值为常量。
如:pStr="jiliang"; //错误的,因为该赋值将新的字符串地址赋值给指针常量,这是不允许的;
*pStr="jiliang";//正确的,可以对指针常量指向的地址修改其内容。
小结:
const char*类型的指针其指向的内容是常量,不能修改,但其地址值可以修改;
char* const类型的指针其地址值是常量,不能修改,但其指向的内容可以修改。
参考:<<VC++深入浅出>>孙鑫