1、const int*, const int * const, 和 int const *简介
int*
:指向 int 的指针
int const *
:指向 const int 的指针。
int * const
:指向 int 的 const 指针。
int const * const
:const 指向 const int 的指针。
const可以在类型的任一侧,如下:
const int * == int const *
const int * const == int const * const
2、常量引用
对变量(此处为 int)的引用,该变量是常量。主要是将变量作为引用传递,因为引用的大小比实际值要小,但是有一个副作用,就是实际变量的别名。我们可能会通过对别名的完全访问而意外更改主变量,因此我们将其设为常量以防止这种副作用。
int var0 = 0;
const int &ptr1 = var0;
ptr1 = 8; // 报错
var0 = 6; // 正常
3、常量指针
一旦常量指针指向一个变量,就不能指向任何其他变量。
int var1 = 1;
int var2 = 0;
int *const ptr2 = &var1;
ptr2 = &var2; // 报错
4、指向常量的指针
一个不能改变它所指向的变量值的指针被称为常量指针。
int const * ptr3 = &var2;
*ptr3 = 4; // 报错
5、常量指针
指向常量的常量指针是一个指针,既不能改变它指向的地址,也不能改变保存在该地址的值。
int var3 = 0;
int var4 = 0;
const int * const ptr4 = &var3;
*ptr4 = 1; // 报错
ptr4 = &var4; // 报错