Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么不通过Ref';行不通_C++_Pass By Reference - Fatal编程技术网

C++ 为什么不通过Ref';行不通

C++ 为什么不通过Ref';行不通,c++,pass-by-reference,C++,Pass By Reference,“通过引用传递”似乎不起作用。输出的第二行应该使用引用,但输出与前面相同的内容 double passByValue(double, double); double passByRef(double&, double&); int main(){ double firstNumber=0, secondNumber=0; char quit =' '; while (quit != 'y'){ cout <<"Ple

“通过引用传递”似乎不起作用。输出的第二行应该使用引用,但输出与前面相同的内容

double passByValue(double, double);
double passByRef(double&, double&);

int main(){    
    double firstNumber=0, secondNumber=0;
    char quit =' ';
    while (quit != 'y'){

        cout <<"Please enter your first number: ";
        cin >> firstNumber;

        cout << "\nPlease enter your second number: ";
        cin >> secondNumber;

        cout <<firstNumber <<"\t" << secondNumber << "\t" << passByValue(firstNumber, secondNumber)<<endl;
        cout <<firstNumber <<"\t" << secondNumber << "\t" << passByRef(firstNumber ,secondNumber )<<endl;

        cout <<"Do you want to quit? y/n";
        cin >> quit;
    }
}

double passByValue(double first, double second){
    first +=5;
    second +=5;
    double sum =first + second;
    return sum;
}

double passByRef(double &a, double &b){
    a +=5;
    b +=5;
    double sum = a + b;
    return sum;
}
double passByValue(double,double);
双passByRef(double&,double&);
int main(){
双第一个数字=0,第二个数字=0;
char quit='';
while(退出!=“y”){
cout-firstNumber;
cout>secondNumber;
试试这个:

double sum = passByValue(firstNumber, secondNumber);
cout << firstNumber <<"\t" << secondNumber << "\t" << sum <<endl;
sum = passByRef(firstNumber, secondNumber);
cout << firstNumber <<"\t" << secondNumber << "\t" << sum <<endl;
double sum=passByValue(第一个数字,第二个数字);

代码是正确的,您的解释是错误的。
在调用
passByReference
后,尝试显示
firstNumber
secondNumber
,您应该会看到:

0 0 10 0 0 10 5 5 实际上没有增加
firstNumber
secondNumber
first
second
是副本。

另一方面,当您通过引用传递时,它们不是5。

为什么您认为在这种情况下,通过引用传递会改变输出?(可能会这样做,但可能不是因为您认为的原因)这不是检查通过引用传递是否“起作用”的最佳方法。查看按值传递和引用之间差异的方法是在每次调用后打印
firstNumber
secondNumber
的值。您假设
@Slava:这是完全不同的情况。下面是一个更好的示例:
func1(func2()).func3(func4());
--然后问,在
func2()
之前可以执行
func4()
吗?答案是可以,但是
func3()
不能在
func1()之前执行。
first +=5;
second +=5;