在下面的按值调用示例中,我无法理解为什么此代码不会将5的值更改为6.
第11行调用函数changeValue,其值为6,所以我认为应该输出6,但仍然输出5?
#include <iostream>
using namespace std;
void changeValue(int value);
int main()
{
int value = 5;
changeValue(value);
cout << "The value is : " << value << "." << endl;
return 0;
}
void changeValue(int value)
{
value = 6;
}
// This doesn't change the value from 5 to 6. 5 is output?
Run Code Online (Sandbox Code Playgroud)
当您按值传递函数参数时,对象的副本将传递给函数而不是原始对象.除非您明确指定函数的参数,否则始终通过C/C++中的值传递.
你的功能:
void changeValue(int value)
Run Code Online (Sandbox Code Playgroud)
通过值接收参数,简而言之value,main()创建一个in的副本并传递给函数,该函数对该值进行操作而不是valuein main().
如果要修改原件,则需要使用pass by reference.
void changeValue(int &value)
Run Code Online (Sandbox Code Playgroud)
现在,原始的引用(别名)value被传递给函数,函数对它进行操作,从而反映出的变化main().
| 归档时间: |
|
| 查看次数: |
3115 次 |
| 最近记录: |