常量指针,就是指向常量的指针,关键字 const 出现在 * 左边,表示指针所指向的地址的内容是不可修改的,但指针自身可变。
指针常量,指针自身是一个常量,关键字 const 出现在 * 右边,表示指针自身不可变,但其指向的地址的内容是可以被修改的。
例:
常量指针: const char* ptr = “hello”
指针常量: char* const ptr = “hello”
另外常量指针有两种写法:const既可写在类型前,又可写在类型后。如上面的例子,常量指针:char const * ptr = “hello” 也是正确的。
void f1(char* p)
{
(1) char s[] = "Gorm";
(2) const char* pc = s; //指向常量
(3) pc[3] = 'g'; //错误:pc是指向常量的
(4) pc = p; //ok
(5) char *const cp = s; //常量指针
(6) cp[3] = 'a'; //ok
(7) cp = p; //错误:cp是常量指针
(8) const char *const cpc = s; //到const的const指针
(9) cpc[3] = 'a'; //错误:cpc指向常量
(10) cpc = p; //错误:cpc本身是常量
}