值传递:形参不会修饰实参;
地址传递:形参会修饰实参;
引用传递:形参会修饰实参;可以简化指针修改实参。
//值传递
void SwapValue(int a,int b)
{
int temp = a;
a = b;
b = temp;
}
//地址传递
void SwapValuePtr(int *a,int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
//引用传递
void SwapValuePtrP(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a = 10;
int b = 20;
SwapValue(a,b);
std::cout << "a= " << a << " b= " << b << std::endl; //打印为 a= 10 b= 20
int a1 = 10;
int b1 = 20;
SwapValuePtr(&a1,&b1);
std::cout << "a= " << a1 << " b= " << b1 << std::endl; //打印为 a= 20 b= 10
int a2 = 10;
int b2 = 20;
SwapValuePtrP(a2,b2);
std::cout << "a= " << a2 << " b= " << b2 << std::endl; //打印为 a= 20 b= 10
}