1. 传值调用机制 ( call- by-value machanism )
(1). 在形参位置插入的是实参的值。如果实参是变量,则插入的只是变量的值,而非变量本身。
(2). 传值调用形参是局部变量。调用函数时,该函数的形参被初始化为实参的值。
eg:
void swap (int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
}
main()
{
int a = 1, b = 2;
cout << “a = ” << a << “b= ” << b << “\n”;
swap(a, b);
return 1;
}
运行结果:
a = 1 b = 2
a = 1 b = 2
说明:没有发生值得交换
2. 传引用调用机制
(1). 替换形参的是实参的内存位置。由于程序变量是作为内存位置来实现的,所以这些内存位置就是变量。也就是说在形参位置插入的是变量本身,而不是变量的值。
(2). 传引用调用形参是被实参的内存位置替换,故若函数体内对该内存位置有所修改,该变量也会改变。
eg:
eg:
void swap (int &x, int &y)
{
int temp;
temp = x;
x = y;
y = temp;
}
此时显示的结果:
a = 1 b = 2
a = 2 b = 1
针对以上两个例子详细解释:
在第一个例子中,在调用swap函数时,是将a和b的值传递给了x和y,此时,x、y相对于a、b的副本,副本的改变不会改变变量本身的值。
在第二个例子中,swap函数定义了x、y的引用,main函数调用swap时,x、y分别为a、b的引用,此时,x和a表示同一个变量,y和b表示同一个变量,当x和y发生交换时,即a和b也发生了交换,从而实现了两个变量值得交换。
原文地址:http://blog.csdn.net/a670449625/article/details/41842827