C++ 为什么我不能增加这个值
假设我有以下代码C++ 为什么我不能增加这个值,c++,C++,假设我有以下代码 int const *p = new int(5); printf("%d",(*p)++); 现在它说 错误C3892:'p':您不能分配给常量变量 为什么我会犯这个错误?我知道p是一个常数,但我只是想打印(*p)++,它不是增加p指向的地址中的内容。有人能给我解释一下到底发生了什么吗?换个说法: int* const p = new int(5); 这意味着指针是常量 int const *p = new int(5); 这意味着指针指向的是常量 int const
int const *p = new int(5);
printf("%d",(*p)++);
现在它说
错误C3892:'p':您不能分配给常量变量
为什么我会犯这个错误?我知道p是一个常数,但我只是想打印(*p)++,它不是增加p指向的地址中的内容。有人能给我解释一下到底发生了什么吗?换个说法:
int* const p = new int(5);
这意味着指针是常量
int const *p = new int(5);
这意味着指针指向的是常量
int const *p = new int(5);
如果使用第一种方法,则可以增加指针指向的值
(*p)++是取消对指针的引用并增加值。因此,您应该使用我发布的第一种方式。操作(*p)+
在语法上等同于(*p)+=1
。也就是说,它尝试对原始变量进行赋值。编译器正在抱怨,因为不允许修改const
变量
在本例中,您将p
声明为指向const
的指针,而不是const
指针
相反,请尝试printf(“%d”,(*p)+1)代码>
或者,您可以将p
声明为const
指针:int*const p
,但这会增加p
所指向的值。只读变量不可赋值。您是在增加内容而不是指针。。。