传值传递的是是实参的拷贝,实参不会被修改;
#include<iostream>
void swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a = 5, b = 10;
swap(a, b);
std::cout << "a = " << a << " b = " << b << std::endl;
return 0;
}
引用传递传递的实参本身,实参可以被修改;
#include<iostream>
void swap(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a = 5, b = 10;
swap(a, b);
std::cout << "a = " << a << " b = " << b << std::endl;
return 0;
}
传指针传递的是实参的地址,也可以被修改;
#include<iostream>
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a = 5, b = 10;
swap(&a, &b);
std::cout << "a = " << a << " b = " << b << std::endl;
return 0;
}