一、函数的值传递之前学过了两种,一种是值传递、另一种是传地址。在学了引用之后便又多了一种方式。
1.值传递:
main
函数里面:
int a = 10;
int b = 20;
swap1(a,b);
cout << "a=" << a << endl;
cout << "b=" << b << endl;//值传递,实参不会发生改变
swap1
(值传递):
void swap1(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
cout << "swap1 a=" << a << endl;
cout << "swap1 b=" << b << endl;//形参的确发生了改变
}
最终运行的结果为:
- 可以看出,在swap1函数里边ab的值的确发生了交换,但是main函数里面的实参并没有改变。形参改变不了实参。这是值传递的方式。
2.地址传递:
同样在刚才的函数前面加一个新的函数:
swap2
(地址传递)
void swap2(int* a, int* b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
在main函数里边也加一条打印ab值得函数:
用传地址的方式ab的真的发生了改变。形参会改变实参。
3.引用传递:
void swap3(int& a, int& b