2011-10-11 22 views

回答

5

號必須這樣做:

const int x = 20; 
const int* p = &x; 
0

是的。

void * ptr = 0xdeadcode; 

不要這樣做。

編輯:或者你的意思是,一個常量,而不是常量地址的地址?像:

const int n = 123; 
const int *ptr = &n; 
0

沒有,字面常量爲20不是對象,所以他們沒有地址。

與Alex的答案不同的是const限定變量。作爲所有變量,它們指向一個對象,所以你可以採取他們的地址。但是要注意,您必須使指針也符合const限定類型。

+0

然後,在程序執行期間存儲常量20的地方與變量比較嗎?謝謝 – caramel1995

+0

@caramel,它不會作爲變量存儲在任何地方。在你的程序使用這樣一個常量的地方,像'if(x <20)do_something'這樣的常量通常直接集成在彙編指令中進行比較。在某些地方,編譯器可能無法做到,需要將其存儲在某個地方,但這完全是他的內部業務,他不會告訴你。 –