java之交换x,y的三种方式

1 值传递:

#include<iostream>
using namespace std;
int main(){
void change(int ,int);
int x=2,y=3;
cout<<"交换前:x="<<x<<" y="<<y<<endl;
change(x,y);
cout<<"交换后:x="<<x<<" y="<<y<<endl;
return 0;
}
void change(int x,int y){
int temp;
temp=x;
x=y;y=temp;
        cout<<"函数内:x="<<x<<" y="<<y<<endl;
}
  

这种方式并不能改变 x,y的值,因为在函数交换后实参的值是没有变的。只是在函数内部改变了x,y的值。

指针传递

#include<iostream>
using namespace std;
int main(){
void change(int * ,int *);
int x=2,y=3;
cout<<"交换前:x="<<x<<" y="<<y<<endl;
change(&x,&y);
cout<<"交换后:x="<<x<<" y="<<y<<endl;
return 0;
}//需要获取资料的朋友请加Q君样:290194256*

void change(int *x,int *y){
int temp;
temp=*x;
*x=*y;
*y=temp;
}

指针传递交换的是实参的地址(传给给形参的是地址),所以最后x,y的值改变了

3.引用传递

#include<iostream>
using namespace std;
int main(){
void change(int & ,int &);
int x=2,y=3;
        cout<<"实参x的地址是:"<<&x<<endl; 
cout<<"交换前:x="<<x<<" y="<<y<<endl;
change(x,y);
cout<<"交换后:x="<<x<<" y="<<y<<endl;
return 0;
}//需要获取资料的朋友请加Q君样:290194256*

void change(int &x,int &y){
int temp;
temp=x;
x=y;
y=temp;
        cout<<"形参x的地址是:"<<&x<<endl;
}

引用 &x,相当于给x去了一个别名,形参x和实参x=2 在内存中地址是相同。

综上,三种交换方式中间接引用的方式都能交换想x,y的值。

经验分享 程序员 微信小程序 职场和发展