实现swap函数的简单应用

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

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

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



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


#include "stdafx.h"
#include
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 "<

}


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;
}


你可能感兴趣的:(实现swap函数的简单应用)