我有兩段代碼,我試圖在只讀位置修改一個值。其中之一是拋出一個錯誤。爲什麼我有時可以修改一個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