2014-03-27 60 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