我对C ++参考参数有些怀疑。我正在从这个网站上学习:
fehleranzahl.setText(klartextWort);
第一个程序:
http://www.doc.ic.ac.uk/~wjk/c++Intro/RobMillerL3.html
然后作者建议"在某些情况下,要求一个函数来修改它传递的实际参数的值是合法的。之后他引入了新的函数:
#include<iostream>
using namespace std;
int area(int length, int width);
int main()
{
int this_length, this_width;
cout << "Enter the length: ";
cin >> this_length;
cout << "Enter the width: ";
cin >> this_width;
cout << "\n";
cout << "The area of a " << this_length << "x" << this_width;
cout << " rectangle is " << area(this_length, this_width) << endl;
return 0;
}
int area(int length, int width)
{
int number;
number = length * width
return number;
}
将值作为参数传递时的主要优势是什么?
答案 0 :(得分:3)
通过引用传递的优点:
通过引用传递的缺点:
<强>来源强>:
答案 1 :(得分:1)
已经有了一个很好的答案(imho值得接受)。但是,我想提供一个更基本的答案,因为您似乎第一次遇到了参考文件:
此功能:
void foo(int x){x +=1;}
可以对传递的(按值)参数的值做任何事情,但它没有机会向调用者返回任何内容,即x+=1
几乎没有任何影响。
另一方面,这个功能:
void bar(int& x){x +=1;}
不仅获取值,而且还处理您作为参数传递的实际变量(通过引用)。因此x+=1
在函数之外也有效。
两个功能都在起作用:
int main(){
int a = 1;
foo(a); // foo gets a copy of a and increments its value
// a is still 1
bar(a); // bar directly increments the value of a
// a is now 2
}
这是通过引用(bar)传递参数与传递值(foo)的主要区别。通过引用传递的主要优点是不需要复制参数的值。 (这就是为什么通过值传递通常使用const引用。传递const引用就像传递值一样,因为即使实际传递了引用,也无法更改值。)但是,有关更多详细信息,请参阅Rohits的答案。 / p>
答案 2 :(得分:1)
int &a
是对传递给该函数的任何参数的引用,您应该始终将引用视为变量的别名(它类似于const
指针)。
如果您的引用不是const
,则允许您更改,因此更改原始变量的内容。
它有用很多原因首先它可以通过参考传递参数避免复制来提高性能,如果你有一个你希望返回多个结果的函数,例如=:
int f (int &a,int &b,int &c,int&d);
int main
{
int first,second,third,result;
result = f(first,third,result);
}
您的所有int
变量都可以在您的功能中更改。