#include<stdio.h>
void main ()
{
int a=4;
const int *p=&a;
*p--;
}
在上面的行中,它意味着我们不能通过p更改值a,因此在递减语句中它应该给出错误,但它不会给出错误。谁能解释为什么?
答案 0 :(得分:4)
p
递减p
而不是(*p)--
的内容。
如果执行error: decrement of read-only location ‘*p’
,则会出现编译错误
ticket
答案 1 :(得分:2)
您可能会发现运营商发生错误的订单。后缀减少比解除引用更高operator precedence。所以你得到了:
*(p--);
由于const指针指向的值未被修改,因此不会产生错误。它是未定义的行为,但是由于您要取消引用无效指针,所以可能发生任何事情。