还记得指向数组的指针和指针数目吗?其实只是名字很绕而已。接下来,我们又要学习名字很绕,实际上没太大关系的三个知识点。
常量指针常量指针就是指向常量的指针。既然指向的是常量,那么就不能通过给*p赋值来改变常量的值。其实常量指针跟普通指针也就这点区别。用法为:cont 数据类型 *指针名;例如:
const int y=58;
const int *p=&y;
int x=69;
const int *p2=&x;
第一行定义int常量y,第二行定义常量指针p并指向常量y:y和*p都不能再被赋值。
第四行定义常量指针*p2并指向int型变量x:可以通过给x赋值来改变x的值,但不能通过给*p2赋值来改变x的值。
指针常量
指针常量就是指针本身是常量,就是说指针中存储的内存地址不能改变,也就是说不能改变指针常量的指向。要注意声明的同时必须初始化。用法为:数据类型 * const 指针名=初始值;例如:
int x=69;
int *const p=&x;
*p=72;
第二行定义了指针常量p,它指向int型变量x,也只能指向x,不可以改变其指向。但是第三行可以通过给*p赋值来改变x的值。
指向常量的常量指针
指向常量的常量指针就是常量指针与指针常量的结合:指针p不能改变其指向,同时指针p指向的是个常量。也就是不能对*p和p赋值。限制太多,所以实际很少用到。举个简单例子:
int x=5;
const int * const p=&x;