c++ - const int 指针错误

标签 c++ pointers constants

我正在学习常量指针并且正在尝试这个

#include<iostream>
using namespace std ;
int main(){
    int a = 10 ; 
    const int *cp  = &a ;               // my constant pointer variable
    cout<<"\nAddress stored in cp = "<<cp ;
    ++cp;
    cout<<"\nAddress stored in cp = "<<cp   ;
}

它增加了存储在 cp 中的地址 但是根据我到现在为止的理解,++cp 不应该报错吗,因为它是一个常量指针,总是指向同一个地址,而且这个地址不能被修改。

但是当我更换

const int *cp = &a ;int *const cp = &a ;

它给了我这个 enter image description here

请原谅我的无知,但是,他们不是应该意味着同一件事吗?

最佳答案

当你在做 int *const cp = &a; 时,它意味着一个指向常量 cp 的整数指针,所以 cp 不能改变。但是,在您以前的版本中,const int *cp 表示指向 cp 的常量 int 指针,因此 cp 指向的值不能更改,但指针本身可以。

通常,人们喜欢从右到左阅读:

const int *cp cp 是一个指向 int 常量的指针,所以整数不能改变。

int *const cp = &a; cp 是指向 int 的常量指针,因此指针不能改变。

关于c++ - const int 指针错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26200429/

相关文章:

c# - .Net OpenCV 包装器值得使用吗?

c++ - 条件好像不行。 (while (dAmount != (2*dbAmount))) 此外,第一次计算不正确 o.O

c++ - C++ 中的 BST 插入

尝试使用指向此指针的指针重新分配指针时崩溃

采用 const 二维数组的 C 函数

python - 保存/加载带有常量的 keras 模型

用于播放/录制音频(.wav、.ogg)的 C++ 多平台库

c++ - 使用数组时的抽象与性能

c++ - 指针输出的虚拟值

arrays - 可以连接字符串常量数组吗?