2017-06-05 36 views
0

C++入門練習2.27第5版。
練習:以下哪些初始化是合法的?解釋爲什麼。C++ Primer Lippman 5th練習2.27 b

(B)int *const p2 = &i2;

這個根據是合法的: https://github.com/Mooophy/Cpp-Primer/tree/master/ch02#exercise-227

我沒有看到i2已申報? (我也看過勘誤表。)

+0

p2被聲明爲一個「const」指向一個整數的指針,並且被初始化爲「i2」的地址 – Zakir

+0

您的引用顯示了'p2'聲明後'i2' *的聲明,但當然不會'幫助。沒有看到書中的練習(我沒有),這是不可能的。 –

+0

@Zakir:是的,但我們不知道'i2'是什麼(除非它指的是在* p2聲明之後顯示的聲明)。更正:'p2'被聲明爲一個指向'const'' int'的指針;指針不是'const'。如果'i2'是一個'const int'則是合法的,如果'i2'是一個非''const'' int'則是非法的。 –

回答

0

它利用了*帶有名稱而不是類型的事實。

I2被聲明爲對這個問題這一個

int* ip, ip2; 

不是指針以上的整數。所以

int *const p2 = &i2; 

P2被分配i2的地址指針。 除非您嘗試更改p2的值,否則p2的const指針不會播放。