void reset( int* ip)
{
*ip = 0; //改变指针ip所指对象的值
ip = 0; //只改变了ip的局部拷贝,实参未被改变
}
int i = 42;
reset(& i);
输出i = 0;
ip = 0 ; 只改变了参数指向的地址,没有改变地址指向的值。
传引用参数
void reset ( int &i)
{
i = 0; //改变了i所引对象的值
}
int j = 42;
reset(j);
输出 j = 0 ;
使用引用避免拷贝,如string 一般非常长,
bool isShorter(const string &s1, const string &s2) //如果函数无须改变引用形参的值,最好将其声明为常量引用。
{
return s1.size () < s2.size();
}