const char *p = string; //此时const限定p的指向,也就是*p是不能变的;
你的注释里就说明了问题啊。
假如是char *p = string,那么你可以:p[0] = 'd',但是因为const char *p=strig,有了const,内容不可以修改,于是p[0] = 'd'是会报告错误的。
p++能执行,那是p本身还是一个变量,是一个指针变量。(p本身是一个变量,const修饰的是p指向的内容,这个定义就解决了一个很大的问题:有时我们希望传递一个数据对象给目标方法使用,但禁止目标方法对提供的数组数据进行修改,以保证数据的安全。而在目标方法对数组数据进行操作的时候,总是要进行遍历的,比如能修改索引位置。)