C ++通过引用或按值传递?
这个问题在这里已经有了答案:
当通过引用传递一个变量时,在函数中对它做出的任何更改都会反映回调用函数中。
另一方面,当您通过值传递变量时,对其所做的更改是本地的,因此不会在调用函数中反映出来。
例如,
#include "iostream"
using namespace std;
void function1(int &x, int y) // x passed by reference
{
x+=y;
}
void function2(int x, int y) // x passed by value
{
x+=y;
}
int main()
{
int x=10;
function1(x, 10); // x is passed by reference (no & while calling)
cout << x << endl; // 20
function2(x, 1000);// x is passed by value
cout << x << endl; // 20
}
注意,无论你传递给function2
的y
值是多少,都不会影响第二条cout
语句。
你不会决定是否传递main
值中的值或引用。 函数定义为您决定。 不管是按值传递还是按引用传递,调用函数的格式都保持不变。
void getCoefficients(double &a, double &b, double &c);
这就是说,“我接受3个参数 - 所有的类型都是double &
(引用double)。引用与指针很混淆,所以我建议你先阅读它。
我们将main中的a,b,c
作为main_method_vars调用。
当你调用getCoefficients
,无论这个函数对其中的传入变量做什么,都反映在main_method_vars上。 实际上,这种方法适用于main_method_vars。
如果你有void getCoefficients(double a, double b, double c)
,这意味着只要你用main_method_vars调用这个方法,这个方法就会复制a,b,c
的值并且使用新的副本而不是工作与原来的副本到它。
void getCoefficients(double &a, double &b, double &c);
void solveQuadratic(double a, double b, double c, double &x1, double &x2);
例如,函数getCoefficients,变量a,b,c通过引用传递,因此如果三个变量的值在getCoefficients函数中更改,则主函数的值也将在主函数中更改。
链接地址: http://www.djcxy.com/p/20611.html