2.4.4 修饰指针或引用
2.4.4.1 指向只读变量的指针const int a;
//const 关键字修饰的是指针所指向的变量,而不是指针本身
//不能通过指针修改所指向的变量 指针本身可以被修改
const int* p
*p = 30; // 非法,无法通过指针修改只读变量的值
int a = 10;
const int b = 20;
p = &a; // 合法,指针可以指向普通变量
p = &b; // 合法,指针可以指向只读变量
2.4.4.2 只读指针
//const 关键字修饰的是指针本身,使得指针本身成为只读变量
//指针本身不能被修改,但是可以通过指针修改所指向的变量。
int a = 10;
int b = 20;
int* const p = &a; // 声明一个只读指针,指向 a
*p = 30; // 合法,可以通过指针修改 a 的值
p = &b; // 非法,无法修改只读指针的值
2.4.4.3 只读指针指向只读变量
//const 关键字同时修饰了指针本身和指针所指向的变量,使得指针本身和所指向的变量都成为只读变量。
//因此,指针本身不能被修改,也不能通过指针修改所指向的变量。
const int a = 10;
const int* const p = &a; // 声明一个只读指针,指向只读变量 a
*p = 20; // 非法,无法通过指针修改只读变量的值
p = nullptr; // 非法,无法修改只读指针的值