C++语言程序设计

| 例7-14

1 void Swap1 (int x, int y) //值传递
{
int temp = x;
x = y;
y = temp;
}
2 void Swap2 (int *x, int *y) //引用传递（指针）
{
int temp = *x; *x = *y;
*y = temp;
}
3 void Swap3 (int &x, int &y) //引用传递
{
int temp = x;
x = y;
y = temp;
}

在上面的三个函数中，虽然Swap1交换了x和y，但并不影响传入该函数的实参，因为实参传给形参时被复制，实参和形参分别占用不同的存储单元。
Swap2使用指针作为参数克服了Swap1的问题，当实参传给形参时，指针本身被复制，而函数中交换的是指针指向的内容。当Swap2返回后，两个实参可以达到交换的目的。
Swap3通过使用引用参数克服了Swap1的问题，形参是对应实参的别名，当形参交换以后，实参也就交换了。