一、常量指针
定义: 常量指针本质上是个指针,只不过这个指针指向的对象是常量。
声明: const 的位置在指针声明运算符 * 的左侧。* 左侧表示指针指向的对象,该对象为常量,那么该指针为常量指针。
const int * p;
int const * p;
注意: 常量指针指向的对象不能通过这个指针来修改,但是因为常量指针本身是一个变量,因此,可以被重新赋值。
#include <iostream>
using namespace std;
int main()
{
const int c_var1 = 8;
const int *p = &c_var1;
*p = 6; // error: assignment of read-only location '* p'
const int c_var2 = 8;
p = &c_var2;
return 0;
}
二、指针常量
定义: 指针常量的本质上是个常量,只不过这个常量的值是一个指针。
声明: const 位于指针声明操作符右侧,表明该对象本身是一个常量,以 * 为分界线,其左侧表示指针指向的类型,右侧表示指针本身的性质。
const int var;
int * const c_p = &var;
注意: 指针常量的值是指针,这个值因为是常量,所以指针本身不能改变。但是,指针的内容可以改变。
#include <iostream>
using namespace std;
int main()
{
int var1 = 3, var2;
int * const c_p = &var1;
c_p = &var2; // error: assignment of read-only variable 'c_p'
*c_p = 12; //ok
return 0;
}