#include <stdio.h>
int main()
{
int i;
i=0;
printf("%d\n%d\n%d\n", i, &i, &(&i));
return 0;
}
我認爲&我只是一個地址的值,並認爲它是0xFF的那麼&(&我)應該是爲0xFF的地址,但爲什麼它是不是有效?爲什麼&(&i)在C中無效?
#include <stdio.h>
int main()
{
int i;
i=0;
printf("%d\n%d\n%d\n", i, &i, &(&i));
return 0;
}
我認爲&我只是一個地址的值,並認爲它是0xFF的那麼&(&我)應該是爲0xFF的地址,但爲什麼它是不是有效?爲什麼&(&i)在C中無效?
6.5.3.2。
- 一元&運算符的操作數應是一個功能指示符,的結果的 []或一元*運算,或者,指定一個對象不是一個位域和是 不是左值用寄存器存儲類說明符聲明。
&i
是對象的地址。
這意味着,一元&
不能&i
使用,作爲地址未指定一個對象或一個函數,也不是[]
或*
操作符的結果。
你的例子實際上是:&0
,而常數0
顯然不屬於上面的列表。
不要混淆地址和指針。地址是一個右值。您不能將「地址」(&)運算符應用於其上。然而指針卻是對象。它們是左值,可以是操作數'&'。
簡單,就這樣看吧。你有一隻蜜蜂巢。我在一個廣場上放了一些蜂蜜。使用&操作符可以引用該方塊。再次使用&算子,你可以參考正方形所在的平方,你不能這樣做。
更確切地說&我指的是我的存儲位置。您不能參考內存位置的內存位置。
0xFF是什麼地址? –
..因爲它比Mourinho接管Man U的意義不大。 –
我的意思是說0xFF也是一個常量,所以應該有一個常數,指的是常量'0xFF'的地址 –