说我有以下代码
int const *p = new int(5);
printf("%d",(*p)++);
Run Code Online (Sandbox Code Playgroud)
现在它说
error C3892: 'p' : you cannot assign to a variable that is const
为什么我收到此错误?我知道p是一个常数但是我只是试图打印(*p)++,它不会增加p指向的地址中的内容.任何人都可以向我解释实际发生了什么吗?
该操作(*p)++在语法上等同于(*p) += 1.也就是说,它尝试对原始变量进行赋值.编译器抱怨,因为你不允许修改const变量.
在这种情况下,您已声明p为指针const,而不是const指针.
相反,试试吧 printf("%d", (*p)+1);
或者,您可以声明p为const指针:int * const p,但这会增加指向的值p.