2014-09-25 93 views
-4

说我有下面的代码我为什么不能增加该值

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

现在它说,

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

为什么会出现这个错误?我明白,p是一个常量,但我只是试图打印(* p)++,它是6不会增加p指向的地址中的内容。任何人都可以向我解释究竟发生了什么?

+0

只读变量不可分配 – P0W 2014-09-25 05:02:23

+0

您正在递增的内容不是指针... – 2014-09-25 05:03:50

回答

5

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

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

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

或者,你可以声明p作为const指针:int * const p,但这样会增加值由p指向。

+0

标记为答案谢谢 – Rajeshwar 2014-09-25 05:07:23

3

变化这样说:

int* const p = new int(5); 

这意味着指针是恒定的。

int const *p = new int(5); 

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

如果你这样做的第一种方法,那么你可以增加指针指向的值。

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

相关问题