1.指针形参
void reset(int *p) {
*p = 0; // 改变指针所指对象的值
}
int main() {
// 指针形参
int i = 123;
cout<<"Pre i = " << i << endl;
reset(&i);
cout<<"After i = " << i << endl;
return 0;
}
运行结果
Pre i = 123
After i = 0
2.引用参数作形参
形参仅仅是实参的另一个名字
void reset(int &i) {
i = 0; // 改变 i 所引对象的值
}
int main() {
// 指针形参
int a = 123;
cout<<"Pre a = " << a << endl;
reset(a); // 形参 i 仅仅是 a 的另一个名字
cout<<"After a = " << a << endl;
return 0;
}
运行结果
Pre a = 123
After a = 0
再来一个例子
// 如果函数无需改变引用形参的值,最好将其声明为常量引用
bool isShorter(const string &s1, const string &s2) {
return s1.size() < s2.size();
}
int main() {
cout<<isShorter("abc", "abcd")<<endl;
return 0;
}