如何理解const char*, char const*, char*const 的区别 ?
我们知道这个结合性是从右至左,就从右往左读:
const char * p
p是一个指针,指向一个const的char。即这个char的内容不能修改,但是这个p指针的地址可以修改。
char * const p
p是一个const指针(不可修改),指向一个char。这个指针地址不能修改,但是指向的这个char的内容可以修改。
const不是类型定义符,只是一个修饰符,const关键字放在类型或者变量名前都是一样的。所以char const * p和 const char * p是一样的。
下面我们来测试一下:
#include <stdio.h>
int main()
{
const char *p1 = "ABC";
char * const p2 = "DEF";
char *p3 = "XXX";
char p4[] = "YYY";
p1 = p3;
//*p1 = '9';//编译错误,p指针可以修改,但指向的内容是常量不能修改
//p2 = p3;//编译错误,p指针是常量不能修改
*p2 = '8';//运行错误,
*p4 = '7';