常量指针
常量指针是定义了一个指针,这个指针指向一个对象,不能通过常量指针来修改这个对象。
常量指针的定义
const 数据类型 *指针变量 = 变量名
数据类型 const *指针变量 = 变量名
举个例子
int temp = 10;
const int* a = &temp;
*a = 9; // 报错,不能通过指针修改对象
temp = 9; // 对象本身是可以修改的
只强调不能通过指针改变对象,不强调指针指向对象的不可变性
指针常量
指针常量是指定义了⼀个指针,这个指针的值只能在定义时初始化,其他地⽅不能改变。
指针常量的定义
数据类型 * const 指针变量 = 变量名
举个例子
int temp1 = 10;
int temp2 = 11;
int* const a = &temp1;
*a = 9;
cout << temp1 << ' ' << temp2 << endl;
return 0;
指针常量强调的是指针的指向的不可变性,但是可以通过指针修改对象
区分指针常量和常量指针
看定义:
常量指针 const int* a
, const
关键字在指针int *
前面
指针常量 int* const a
, const
关键字在变量a
前面
引用
引用的本质在c++内部实现是一个指针常量.
这也就解释了为什么可以通过引用直接修改对象,引用一旦初始化就不能改变。