引用型参数
一.函数的形参是实参的别名
•可以将函数的形参声明为引用形式,该形参在参数传递过程中由对应位置的实参初始化,并成为该实参的别名
–void fun (int& formal)
{
cout << &formal << " : " << formal << endl;
}
–int actual = 10;
cout << &actual << " : " << actual << endl;
fun (actual);
二.在函数中修改实参值
•通过引用型形参,可以在函数体内部修改调用者实参的值,成为除返回值和指针参数之外,第三种由函数内部向函数外部输出数据的途径
–double rect (double w, double h, double* c, double& s)
{
*c = (w + h) * 2;
s = w * h;
return sqrt (w * w + h * h);
}
– double c, s, d = rect (4, 3, &c, s);
cout << "对角线长度:" << d << endl;
cout << "矩形的周长:" << c << endl;
cout << "矩形的面积:" << s << endl;
三.避免对象复制的开销
•通过引用传递参数,形参只是实参的别名而非副本,这就避免了从实参到形参的对象复制,这对于具有复杂数据结构的参数类型而言意义非常
–struct User
{
char name[64];
char address[256];
char mbox[128];
};
–void insert (User& user) { ... }
–User user = { ... };
insert (user);