c++中指针常量和常量指针一样吗
时间: 2023-08-29 19:08:10 浏览: 92
指针常量和常量指针是不同的概念。
指针常量是一个指针,它的值不能被改变,但是它所指向的值可以被改变。例如:
```
int a = 10;
int b = 20;
int *const ptr = &a; // ptr是一个指针常量,它的值不能被改变,指向a
*ptr = 30; // 合法,可以改变ptr所指向的值,即a的值
// ptr = &b; // 不合法,不能改变ptr的值,即不能让它指向b
```
常量指针是一个指向常量的指针,它所指向的值不能被改变。例如:
```
int a = 10;
int b = 20;
const int *ptr = &a; // ptr是一个常量指针,它所指向的值不能被改变,即a的值不能被改变
// *ptr = 30; // 不合法,不能改变ptr所指向的值,即a的值
ptr = &b; // 合法,可以改变ptr的值,即让它指向b
```
因此,指针常量和常量指针的含义是不同的。
相关问题
你说一下C++中指针常量和常量指针的区别
C语言中指针常量和常量指针的区别在于指针常量的值(即指针所指向的地址)是不可修改的,而常量指针所指向的变量或地址的值是不可修改的。简单来说,指针常量是指针本身不能改变指向的地址,而常量指针则是指向的地址所存储的值不能改变。
c++中指针常量和常量指针的区别,用代码举例说明
在C++中,指针常量(const pointer)和常量指针(pointer to const)是两个不同的概念:
1. **指针常量**:它是指向某个变量的指针,但是该指针本身是不可修改的,即不能改变它所指向的对象,但可以改变它的NULL状态。例如:
```cpp
int value = 5;
const int* ptrConst = &value; // 创建一个指向常量整数的指针常量
// ptrConst不能再改变它指向的值,如 *ptrConst = 6; 是不允许的
```
这里,`ptrConst`虽然指向的是常量`value`,但我们不能通过它修改`value`。
2. **常量指针**:这种指针指向的是一个常量对象,而不是指针自身是常量。这意味着你可以修改这个指针指向的内容,但不能更改指针本身指向另一个地址。例如:
```cpp
const int value = 5;
int* const ptrToConst = &value; // 创建一个指向常量的指针,但不能改变它的指向
// ptrToConst现在不能改变它所指向的对象,如 *ptrToConst = 6; 是允许的,但ptrToConst = &anotherValue; 是不允许的
```
在这里,尽管`value`是常量,`ptrToConst`仍然能访问并读取`value`,只是不能将它指向其他变量。
总结一下:
- 指针常量限制了对指针本身的修改,但可以操作其指向的对象。
- 常量指针限制了对指针指向内容的修改,但可以保留指针自身的引用不变。
阅读全文