为什么我不能增加这个值

时间:2014-09-25 04:59:58

标签: c++

说我有以下代码

int const *p = new int(5);
printf("%d",(*p)++);

现在它说

error C3892: 'p' : you cannot assign to a variable that is const

为什么我收到此错误?我知道p是一个常数但是我只是试图打印(* p)++,它不会增加p指向的地址中的内容。谁能向我解释实际发生了什么?

2 个答案:

答案 0 :(得分:5)

操作(*p)++在语法上等同于(*p) += 1。也就是说,它尝试对原始变量进行赋值。编译器抱怨,因为您不允许修改const变量。

在这种情况下,您已声明p是指向const的指针,而不是const指针。

相反,请尝试printf("%d", (*p)+1);

或者,您可以将p声明为const指针:int * const p,但这会增加p指向的值。

答案 1 :(得分:3)

以这种方式改变:

int* const p = new int(5);

这意味着指针是常量。

int const *p = new int(5);

这意味着指针指向的是常量。

如果你是第一种方式,那么你可以通过指针增加你指向的值。

(* p)++取消引用指针并递增值。所以你应该是我发布的第一种方式。