使用一个指针涉及到两个对象:该指针本身和被它所指的对象。将一个指针的声明用const “预先固定” 将使那个对象而不是使这个指针成为常量。要将指针本身而不是被指对象声明为常量,我们必须使用声明运算符*const, 而不是只用简单的const。 例如,
void f1(char* p)
{
char s[] = "Gorm";
const char* pc = s; //指向常量,即指针本身是可以改变的。
pc[3] = 'g'; //错误:pc是指向常量的
pc = p; //OK
char *const cp = s; //常量指针,即指针不能改变了,但指向的内容可以改变。
cp[3] = 'a'; //OK
cp = p; //错误:cp是常量指针
const char *const cpc = s; //到const的const指针
cpc[3] = 'a'; //cpc指向常量
cpc = p; //cpc本身是常量
}