在C++中,参数传递的方式是“实虚结合”。
- 按值传递(pass by value)
- 地址传递(pass by pointer)
- 引用传递(pass by reference)
按值传递的过程为:首先计算出实参表达式的值,接着给对应的形参变量分配一个存储空间,该空间的大小等于该形参类型的,然后把实参表达式的值一一存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用。这种传递是把实参表达式的值传送给对应的形参变量,故称这种传递方式为“按值传递”。
使用这种方式,调用函数本身不对实参进行操作,也就是说,即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值。
1 /* 2 pass By value 3 */ 4 #include <iostream> 5 using namespace std; 6 void swap(int,int); 7 int main() 8 { 9 int a = 3, b = 4; 10 cout << "a = " << a << ", b = " 11 << b << endl; 12 swap(a,b); 13 cout << "a = " << a << ", b = " 14 << b << endl; 15 return 0; 16 } 17 void swap(int x, int y) 18 { 19 int t = x; 20 x = y; 21 y = t; 22 }