const 修饰指针变ᰁ和引⽤变ᰁ:如果 const 位于⼩星星的左侧,则 const 就是⽤来修饰指针 所指向的变ᰁ,即指针指向为常ᰁ;如果 const 位于⼩星星的右侧,则 const 就是修饰指针 本身,即指针本身是常ᰁ。请举例说明
时间: 2024-09-27 17:12:48 浏览: 37
`const` 修饰指针或引用时确实有两种情况:
1. **修饰指针所指向的内容**:
当 `const` 放在指针前,如 `const int *p`,这意味着 `p` 是一个指向常量整数的指针。这里的 `const` 指的是 `*p`,即指针所指向的对象是不可修改的。例如,当你声明一个 `const int *p = &x;`,`p` 不允许修改 `x` 的值,只能读取它。
2. **修饰指针本身**:
如果 `const` 放在指针后,如 `int const *p`,那么 `p` 是一个指向常量地址的指针。这意味着 `p` 所指向的内存区域内的数据可以修改,但是指针本身以及它所指向的数据类型的指针不能被修改。比如,不能通过 `p` 修改指向的值,也不能重新赋值给另一个变量。
举个例子:
```cpp
int x = 5;
const int *p1 = &x; // p1指向常量整数值x
*p1 = 6; // 错误,不允许修改x的值
int y = 7;
const int *const p2 = &y; // p2是一个常量指针,既不能修改指针(p2),也不能修改*y (y)
*p2 = 8; // 错误,既不允许修改y的值,也不允许修改p2指向的地址
```
在这里,`p1` 只能读取,而 `p2` 甚至连读取都禁止了。
阅读全文