C++里面的传值传址传引用调用问题

// C_TEST.cpp : Defines the entry point for the console application.
//
//
#include "stdafx.h"
#include "iostream"
using namespace std;//我是在VS2008里面作的调试,这里需要导入命名空间STD
void swap1(int x,int y)//传值调用
{
 //实际上在传值调用时,是把数据的副本传给了被调用函数,
 //被调用函数内是交换了的,而主函数里面保持原值
   int temp;
   temp = x;
   x = y;
   y = temp;
  cout<<"     传值函数内:    "<<x<<"     "<<y<<endl;
}
void swap2(int *x,int *y) //传址调用
{
 //把主函数里数据的地址传了过来
 //这里改变了数据的地址,在主函数里打印出a,b的时候,当然就发生了交换!
   int temp;
   temp = *x;
   *x = *y;
   *y = temp;
   cout<<"     传址函数内:    "<<x<<"     "<<y<<endl;
}
void swap3(int &x,int &y)//传引用
{
 //加了&之后,用地址引用了主函数里面的数据值,说明x,y 的地址是a,b的地址~~,因而主函数里面的a,b发生交换~~
   int temp;
   temp = x;
   x = y;
   y = temp;
   cout<<"     换址函数内:    "<<x<<"     "<<y<<endl;
}


void main()//入口点
{
 int a(8);
 int b(3);


   cout<<"     数据:          "<<"a"<<"     "<<"b"<<endl;
   cout<<"     初值:          "<<a<<"     "<<b<<endl;
   //传值调用
   swap1(a,b);
   cout<<"     传值调用:      "<<a<<"     "<<b<<endl;
   //传址调用
   swap2(&a,&b);
   cout<<"     传址调用:      "<<a<<"     "<<b<<endl;
   //恢复原值
   swap2(&a,&b);
   //传引用调用
   swap3(a,b);
   cout<<"     引用调用:      "<<a<<"     "<<b<<endl;
   getchar();
}

结果:


//要想清楚的是在那个地方输出,被输出的是那个值!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值