C++ 实参和形参 交换变量值

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也发生了交换,从而实现了两个变量值得交换。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。