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;