我现在正在通过在线公开课学习c ++。这是一段我不太了解的简单代码。我理解为什么它最后打印a=3
:代码只将a
的值传递给change
函数,因此change
函数无法更改a
,但更改功能中的30
在哪里,我该如何打印?谢谢!!
#include<iostream>
using namespace std;
int change(int c)
{
c=30;
return c;
}
int main()
{
int a=3;
change(a);
cout<<"a="<<a<<endl;
return 0;
}
答案 0 :(得分:2)
c
的值存储在临时内存中,该内存在调用函数时分配,并且只能由该特定函数调用访问。
编辑:显然真正的问题是你如何使用返回值。
本质上,函数的返回值在完成执行后“替换”该函数。在这种情况下,change(a)
被替换为30,但您应该知道您不能只在代码中键入整数。你必须分配它们。因此,您应该写a = change(a)
,最后看起来像a = 30
。 (或声明另一个整数,即{。int b = change(a)
)。
这使a
的新值成为change()
的返回值。 (它不会形成一些疯狂的无限循环,因为change(a)
在分配完成之前执行)
答案 1 :(得分:1)
那是因为您没有将返回值分配给变量。
你应该使用
a = change(a);
或
void change(int &c) // pass c by reference to make it changeable by such function
{
c=30;
}
答案 2 :(得分:0)
我认为您需要通过此链接更清楚地了解如何将值传递给函数:http://courses.washington.edu/css342/zander/css332/passby.html