C语言写交换函数,出现问题
原因:
形式参数只在函数内有用
当实参传递给形参的时候
形参是实参的临时拷贝
传值调用时候修改形参对实参没有影响
传址调用就是交换的那个指针,函数内部可以操作函数外部的变量,改变值就用传址
修正
Java实现
class Value{
public int val;
}
public class TestDemo{
public static void swap( Value value1,Value value2){
int tmp=value1.val;
value1.val=value2.val;
value2.val=tmp;
}
public static void main(String[] args) {
Value value1=new Value();
value1.val=2;
Value value2=new Value();
value2.val=3;
System.out.println(value1.val+" "+value2.val);
swap(value1,value2); //注意交换的对象
System.out.println(value1.val+" "+value2.val);
}
}