实现swap函数的简单应用

本用例主要告诉大家指针的简单实用和引用的简单用法,告诉我们在自己写交换数据时需要注意的地方。

本用例在VS2010上测试通过,如需在Linux上测试可以自己去修改。

本用例前两个是错误写法,后两个是正确的写法。



// Point.cpp : 定义控制台应用程序的入口点。
//指针是用来保存地址的变量交换两个变量的值
//用指针实现


#include "stdafx.h"
#include <iostream>
using namespace std;

//这是一种错误的写法,这种写法的错误原因是因为函数在调用结束后会把所有的变量都会
//清理出去,最终没有实现数据的交换。
//函数调用过程中,形参发生了改变,但是实参没有发生变化,这是最典型的传值调用方式
void swap1(int a,int b)
{
    int temp=0;
temp=a;
a=b;
b=temp;
}



//在函数调用过程形参发生了交换,但是实参没有发生交换,
//这种方式表面上是传址(实参为地址),
//但是由于函数调用过程中实际上没有针对实参作出任何操作,
// 其本质还是传值调用,故也将其划为传值调用
void swap2(int *a,int *b)
{
    int *temp=NULL;
temp=a;
a=b;
b=temp;
}


//这个是实现指针的地址不会变化,但是指针所指向的内容被交换了,实现了数据的交换。
void swap3(int *a,int *b)
{
    int temp=0;
temp=*a;
*a=*b;
*b=temp;
}


//通过引用实现数据的交换
void swap4(int &a,int &b)
{
  int temp=0;
  temp=a;
  a=b;
  b=temp;
}


void output(int x,int y)
{
  std::cout<<"The frist "<<x<<"  The second   "<<y<<endl;


}


int main()
{
int x=12;
int y=34;
        swap1(x,y);
output(x,y);
swap2(&x,&y);
output(x,y);
swap3(&x,&y);
output(x,y);
swap4(x,y);
output(x,y);

return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值