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

所指向的值。只读变量不可赋值。您是在增加内容而不是指针。。。