Chinaunix首页 | 论坛 | 博客
  • 博客访问: 427403
  • 博文数量: 79
  • 博客积分: 2886
  • 博客等级: 少校
  • 技术积分: 968
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-16 10:33
文章分类

全部博文(79)

文章存档

2013年(7)

2012年(17)

2011年(28)

2010年(25)

2009年(1)

2008年(1)

我的朋友

分类: C/C++

2011-03-16 17:32:07



#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();
}


output:
阅读(2634) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~