const修饰指针变量
时间: 2024-01-07 21:04:01 浏览: 96
当const修饰指针变量时,表示指针本身是不可修改的,即指针的值不能再指向其他地址。但是指针所指向的变量的值可以修改。例如,当使用const修饰int *const p时,p的值不能改变,即不能再指向其他地址,但是可以通过p修改所指向的变量的值。而当使用const修饰const int *p时,p的值可以改变,即可以指向其他地址,但是不能通过p修改所指向的变量的值。
相关问题
const 修饰指针变量
const 修饰指针变量可以有两种方式:
1. const 在 * 前面:这种方式表示指针指向的值是常量,即不能通过该指针修改指向的值。例如:
```
const int *ptr;
```
这里的 ptr 是一个指向 int 类型对象的指针,但通过 ptr 不能修改指向对象的值,可以用它来读取对象的值。
2. const 在 * 后面:这种方式表示指针本身是常量,即不能通过该指针修改指向的地址。例如:
```
int * const ptr;
```
这里的 ptr 是一个常量指针,它指向一个 int 类型对象,并且不能通过 ptr 修改它所指向对象的地址,但可以通过 ptr 修改对象的值。
需要注意的是,const 可以同时修饰指针和指向的值,例如:
```
const int * const ptr;
```
这里的 ptr 是一个既指向常量对象又是常量的指针,即不能通过 ptr 修改指向对象的地址,也不能通过 ptr 修改对象的值。
const修饰指针和变量
const关键字可以用来修饰指针和变量。如果const修饰的是指针,则指针所指向的值不能被修改,但是指针本身可以被修改。例如:
```c++
const int* p; // p是指向const int的指针,p所指向的值不能被修改
int const * p; // 与上一行等价
int x = 1;
p = &x; // 合法
*p = 2; // 不合法,p所指向的值不能被修改
```
如果const修饰的是变量,则变量的值不能被修改。例如:
```c++
const int x = 1; // x是一个const int,其值不能被修改
x = 2; // 不合法,x的值不能被修改
```
需要注意的是,const修饰的变量并不一定是常量,因为它的值可以在编译时期被确定。另外,在函数参数中应用const修饰符可以避免函数对变量的修改。
阅读全文