const是C语言中的一个关键字,用于限定一个变量不允许改变,在一定程度上用于提高程序的安全性和可靠性。
根据const 与指针符号”*”的位置,包括常量指针、指针常量、指向常量的常量指针。
常量指针(以int类型为例):
定义方法:const int *p 或 int const *p ;
含义:其标明指针p指向的是常量,意思也就是说解引用*p的值为常量,不可修改,但p的值可以改变。
注意,我们说不能通过指针来修改其所指向的值,但并不代表该值不能改变。
示例:
int a = 10;
const int *p = &a;
*p= *p+1; //错误,其所指向的值发生了改变
a= a+1; //正确,a是普通变量,可以修改,与此同时常量指针p指向的值改变了。
指针常量:
定义方法:int * const p;
含义:指针p是常量,不可修改,但其指向的值可以改变。由于指针p本身是const的,在编译的时候就必须确定p的值(p所指向的地址),因此在声明的同时必须初始化指针p。
示例:
int a ;
int b = 0;
cin>>a;
int* const p = &a; //注意,此时p只给个地址,编译时并不确定a的值,运行才能确定。
p= &b; //错误,p这个指针为常量,不能修改。
指向常量的指针常量
定义方法:const int * const p;
含义:常量指针和指针常量的综合,在此不再赘述。