C ++通过引用或按值传递?

这个问题在这里已经有了答案:

  • 传递引用与价值传递之间有什么区别? 18个答案

  • 当通过引用传递一个变量时,在函数中对它做出的任何更改都会反映回调用函数中。

    另一方面,当您通过值传递变量时,对其所做的更改是本地的,因此不会在调用函数中反映出来。

    例如,

    #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
    }
    

    注意,无论你传递给function2y值是多少,都不会影响第二条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

    上一篇: C++ passing by reference or by value?

    下一篇: When to use references as parameters in C++