1.指向常量的指针:
在指针定义语句的类型前加const,表示指向的对象是常量。
const int a = 78;
const int *pi = &a;
*pi = 89; //错误做法,不能修改指针指向的值
pi = &b; //ok,指针值可以修改,可以将另一个常量值b的地址赋给pi
pi = &c; //ok,指针值可以修改,可以将一个变量值c的地址赋给pi
指针常量定义“const int * pi = &a”告诉编译器,*pi是常量,不能将*pi作为左值进行操作。
2.指针常量
在指针定义的指针名前加const,表示指针本身是常量。
char *const pc = "asdf";
pc = "dfgh";//错误,指针常量不能改变其指针值
*pc = 'b'//ok,pc的内容现在为bsdf
const int b = 28;
int * const pi = &b;//错误,不能将const int *转变为int *
定义“int * const pc = &b;”告诉编译器,pc是常量,不能作为左值进行操作,但是允许修改间接访问值,即*pc可以修改
3.指向常量的指针常量
const int *const pi = &b
定义告诉编译器,pi和*pi都是常量,不能作为左值进行操作。