(1)指针常量:顾名思义它就是一个常量,但是是指针修饰的。
格式:
int * const p //指针常量
例:
int a,b;
int * const p=&a //指针常量
//那么分为一下两种操作
*p= 9; //操作成功
p=&b; //操作错误,指针p将一直指向a,不能再指向b
因为声明了指针常量,p代表一个指针地址,因此指针变量不允许修改,但是指针所指的值即*p是可以修改的。如同次指针指向一个地址该地址不能被修改,但是该地址里的内容可以被修改”。
(2)常量指针
常量指针:如果在定义指针变量的时候,数据类型前用const修饰,被定义的指针变量就是指向常量的指针变量,指向常量的指针变量称为常量指针。
格式:
const int *p = &a; //常量指针
例:
int a,b;
const int *p=&a //常量指针
//那么分为一下两种操作
*p=9; //操作错误,指针所指的值不能改变
p=&b; //操作成功
因为常量指针本质是指针,指针所指的对象的值,即*P不能修改,但是指针,即p是可以修改的。
小结:
A、关键要看const修饰的是谁 int const 和 const int的写法是一样的 B、指针的话看const离谁( 是‘*’ 还是‘指针变量名’)比较近就是修饰谁的,比如: (a)const * p:表示带*运算对象的是常量,也就是*p 不可变 (暗示p可变,p不带‘*’ 嘛) (b)* const p:表示变量名是常量 也就是p不可变 (暗示*p可变,const没有修饰‘*“ 嘛)