码迷,mamicode.com
首页 > 其他好文 > 详细

常见误区(一)

时间:2015-08-09 15:27:30      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:

无论是C/C++,还是java,默认情况是值传递,这就造成编写一般意义认为正确的交换两数的方法成为错误的。

C++中可用指针或者引用方式避免

#include<iostream>
using namespace std;

//一般认为,但是由于传过去的是两个值,所以变量值不改变
void swap1(int a ,int b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
	
}

//采用引用的方法,书写简单易懂
void swap2(int &a,int &b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
}

//采用指针方式
void swap3(int *a,int *b)
{
	int temp = *a;
	*a = *b;
	*b =temp;
}
int main()
{
	int swapa = 10;
	int swapb = 20;
	int swapc = 10;
	int swapd = 20;
	int swape = 10;
	int swapf = 20;
	swap1(swapa,swapb);
	cout<<"swapa原来10,现在为:"<<swapa<<endl<<"swapb原来20,现在为:"<<swapb<<endl;
	swap2(swapc,swapd);
	cout<<"swapc原来10,现在为:"<<swapc<<endl<<"swapd原来20,现在为:"<<swapd<<endl;
	swap3(&swape,&swapf);
	cout<<"swape原来10,现在为:"<<swape<<endl<<"swapf原来20,现在为:"<<swapf<<endl;
	
	system("pause");
}

 技术分享

可以看出直接编写的swap1()方法是无法完成任务的。

但是采用引用或者是指针的形式是行得通的。

 

常见误区(一)

标签:

原文地址:http://www.cnblogs.com/starainDou/p/4715040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!