我有两段代码,我试图在只读位置修改一个值。其中之一是抛出一个错误。为什么我有时可以修改一个const对象,有时候不是?
1stcode.c
void main()
{
int const k=9;
int *p=&k;
*p=10;
printf("%d",k);
}
2ndcode.c
void main()
{
int const * p=5;
printf("%d",++(*p));
}
这里1stcode.c
让我简单地修改只读存储器的位置,但2ndcode.c
抛出一个错误:
error: increment of read-only location '*p'
为什么当两个位置都是只读的时候是这样吗?
为什么这个downvote? – 2012-02-23 12:09:03
我没有倒下,但我理解那些人。在你的第一个代码中,你将一个“const”限定变量的地址转换为一个假设它不是的地址。那么你问我们为什么编译器接受这个? – 2012-02-23 12:14:39