您的位置:首页 > 其它

常见误区(一)

2015-08-09 13:48 246 查看
无论是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()方法是无法完成任务的。

但是采用引用或者是指针的形式是行得通的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: