2014-03-27 212 views
0

我非常困惑,使用指針。在下面的代碼中,如果我設置currentYear = 2010,我預計2010年的值將分配給initYear。但是,當我調試它時,在代碼的第一行,inityear = 2009。在代碼的最後一行,initYear也等於2009,currentYear = 2010.將值傳遞給指針

任何人都可以解釋爲什麼發生這種情況,以及我當今年2010年可以使initYear成爲2010年嗎?謝謝。

下面是代碼:

int initYear = pEnvContext->currentYear; 
     for (int i=0; i < m_numberOfRuns; i++) 
     { 
     UpdateMonteCarloInput(pEnvContext,i); 
     pEnvContext->run=i; 
     pEnvContext->currentYear=initYear; 

回答

2

使用參考:

int& initYear = pEnvContext->currentYear; 

現在initYear基本上是另一種方式來訪問currentYear值。請參閱here以瞭解有關參考的更多信息。

+0

謝謝。所以,pEnvContext實際上指向currentYear的地址,它是一個地址,而不是一個值。我對麼?對不起,這個愚蠢的問題,但我是新來的C + +,是非常困惑。 – James

+0

'pEnvContext'指向某個類,'currentYear'是該類的成員變量,您可以通過編寫'pEnvContext-> currentYear'來訪問它。 – Danvil

0

這條線:

int initYear = pEnvContext->currentYear; 

副本存儲在pEnvContext-> currentYear到initYear變量的值;所以,不管currentYear會發生什麼,initYear都會包含它自己的副本。

如果您想要引用currentYear,並且希望在更新currentYear時更新它,請使用引用(如Danvil之前所述)。

+0

謝謝,Danvil和Oopscene。 – James