结果这个程序错了?

时间:2016-12-26 20:02:38

标签: c++ visual-c++

我已编写此程序,我希望它能打印输出“10”。但它正在打印15.为什么要这样做呢?

#include "stdafx.h"
#include"iostream"
#include<conio.h>
using namespace std;
void f(int a, int b){
    b=a+a;
}
int main(){
    int a = 5, b = 15;
    f(a,b);
    cout << b;
    _getch();
    return 0;
}

2 个答案:

答案 0 :(得分:5)

您可以通过ab传递给该功能。所有你传递给函数的都是5和15.你从变量ab获得这些值对函数来说无关紧要,因为它得到的只是那些值,而不是你从哪里得到它们。

函数内的ab变量是在函数执行时开始存在的局部变量,在函数终止时不再存在。它们与main的本地变量无关,具有相同的名称。

答案 1 :(得分:0)

为了详细说明其他人所说的内容,您在main()f()中定义的变量是本地的。 a中的bmain()f()中类似命名的内容完全不同且独立。

要获得所需的10结果,您可以使用以下方法:

...
void f(int a, int& b){
    b=a+a;
}

&之前注意b

我们在这里做的是,我们正在通过&#39; b&#39;作为f()的参考。通过这种方式,f()可以修改其值并将新值传递给main()

作为练习,请将a中的bf()重命名为cd,并查看相同的结果。