C++参数传递
1、按值传递:将实参的值拷贝给形参,形参和实参是两个独立的对象,函数对形参进行操作,不影响实参的值。
指针形参,
void reset(int* p)
{
*p = 0; //改变指针p所指对象的值
p = 0; //只改变了p的局部拷贝,实参未被改变
}
调用reset函数后,实参所指的对象的值被改变为0,但是实参本身没有改变
2、按引用传递:和其他引用一样,引用形参也是它绑定的对象的别名;也就是说,引用形参是它对应的实参的别名。通过引用形参可以改变实参的值
传递的依旧是对象,而不是对象的地址。
void rReset(int & i) // i是传给rReset 函数对象的另一个名字
{
i = 0; // 改变了i所引对象的值
}
调用此函数时,i绑定了传给函数的int对象,此时,改变i就是改变所引对象的值。
3、使用引用避免拷贝
尽量使用按引用传递,而减少使用按值传递
当函数不需要修改引用形参的值,最好将其声明为常量引用
bool isShorter(const string &s1, const string &s2)
{
return s1.size() < s2.size();
}