const修饰指针和变量
时间: 2023-07-20 12:20:47 浏览: 59
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修饰符可以避免函数对变量的修改。
相关问题
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 修饰的指针变量表示指针指向的数据是不可修改的。它可以有两种形式:
1. 指向常量的指针(Pointer to a constant):const修饰的是指针所指向的数据,指针本身是可以修改的。例如:
```
const int* ptr;
```
这里 ptr 是一个指向常量的指针,它可以指向一个 int 类型的常量,但不能通过 ptr 修改所指向的数据。
2. 常量指针(Constant pointer):const修饰的是指针本身,指针指向的数据可以修改。例如:
```
int* const ptr;
```
这里 ptr 是一个常量指针,它指向一个 int 类型的变量,但不能通过修改 ptr 来改变其指向的地址。
需要注意的是,const 修饰符可以放在 * 前面或者后面,效果是一样的。例如上面两个例子中的 const int* 和 int* const 是等价的。
希望能解答你的问题!如果还有其他问题,请继续提问。