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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值