我已编写此程序,我希望它能打印输出“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;
}
答案 0 :(得分:5)
您可以通过值将a
和b
传递给该功能。所有你传递给函数的都是5和15.你从变量a
和b
获得这些值对函数来说无关紧要,因为它得到的只是那些值,而不是你从哪里得到它们。
函数内的a
和b
变量是在函数执行时开始存在的局部变量,在函数终止时不再存在。它们与main
的本地变量无关,具有相同的名称。
答案 1 :(得分:0)
为了详细说明其他人所说的内容,您在main()
和f()
中定义的变量是本地的。 a
中的b
和main()
与f()
中类似命名的内容完全不同且独立。
要获得所需的10
结果,您可以使用以下方法:
...
void f(int a, int& b){
b=a+a;
}
(&
之前注意b
)
我们在这里做的是,我们正在通过&#39; b&#39;作为f()
的参考。通过这种方式,f()
可以修改其值并将新值传递给main()
。
作为练习,请将a
中的b
和f()
重命名为c
和d
,并查看相同的结果。