const int* 、int* const、const int* const

发布时间 2023-10-23 20:24:46作者: share0956
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;  // 非法,无法修改只读指针的值