2016-01-10 77 views
1
#include <iostream> 
using namespace std; 

void f(int& p) 
{ 
    p += 2; 
} 

int main() 
{ 
    int x = 10; 
    f(x); 
    int y = x + 1; 
    f(y); 
    cout << "x is " << x << endl; 
    cout << "y is " << y << endl; 
    system("PAUSE"); 
    return 0; 
} 

现在的答案是,x是12和y为15C++输出搞清楚问题

我有点明白也许这x是12.要说明,如果我这样做是正确的,作为

void f (int &p) 
{ 
    p += 2; 
} 

int x = 10所以你10 += 2其是12,从而x是12.

卜T I不明白为什么y是15

是不是因为我用12 xint y = x + 1所以它的12 + 1是13,然后13 += 2这是15?

回答

0

是不是因为我用12 xint y = x + 1所以它的12 + 1是13,然后13 += 2这是15?

是。 f是一个以整数值为参考并将其增加2的函数。函数调用后,整数将被永久更改。

int x = 10; 
// `x` is 10. 

f(x); 
// `x` is now 12. 

int y = x + 1; 
// `y` is 13. 

f(y); 
// `y` is now 15. 
+0

非常感谢! :) – Nina555

0

的值被改变内部f(),因为它们都通过引用发送- void f(int& p)

所以:

int x = 10; 
f(x); // x is 12 after the call 
int y = x + 1; // y = 13 
f(y); // y = (12+1) + 2 = 15 after the call 

更新问题:

是不是因为我用12 x对于INT Y = X + 1,所以它12 + 1这是 13,然后13 + = 2这是15?

是的,见上文。