为什么这个程序显示3个输出,为什么b覆盖?

时间:2014-03-31 21:24:55

标签: c++ function variables override

#include "stdafx.h"
#include <iostream>

using namespace std;

void silly(int & a, int & b)
{
    a=10;
    b=20;
    cout << a << "" << b << endl;
}


void main()
{
    int z=30;
    silly(z,z);
    cout << z << endl;
    system("Pause");

}

这个输出是:

2020 20

为什么有3个输出,为什么b会覆盖?

我问,因为这是家庭作业的一部分,我并不完全理解变量的传递,尤其是字符串/数组。

1 个答案:

答案 0 :(得分:0)

您正在将z的引用传递给silly()函数。

当你在silly()中更改a或b(两个对z的引用)的值时,它会更改z的值。

所以,在这一行:

  cout << a << "" << b << endl;

z的值是20,因此是输出。