使用一个指针时涉及到两个对象:该指针本身和被它所指的对象。将一个指针的声明应const“预先固定”将使那个对象而不是使这个指针成为常量。要讲指针本身而不是被指对象声明为常量。我们必须使用声明运算符*const,而不能简单的使用const。举例:
1 void fl(char *p) 2 { 3 char s[] = "Gold"; 4 const char *pc = s; //指向常量 5 pc[3] = 'g'; //错误。pc指向常量 6 pc = p; //正确。指针不是常量 7 8 char *const cp = p; //常量指针 9 cp[3] = 'g'; //正确.指向对象不是常量 10 cp = p; //错误。指针是常量 11 }
定义常量指针的声明运算符是*const。并没有const*声明符,所以出现在*之前的const是作为基础类型的一部分。例如:
1 char *const cp; //到char的const指针 2 const char *cp; //到const char的指针 3 char const *cp; //到const char的指针