我正在学习常量指针并且正在尝试这个
#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 ;
它给了我这个
请原谅我的无知,但是,他们不是应该意味着同一件事吗?
最佳答案
当你在做 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/