java自己写的swap交换函数,为什么不能直接将数组中arr[i],arr[l]交换,而是传入arr和数组的下标?
来源:3-5 快速排序法 - Quick Sort
道外二蹄脚
2017-12-24
public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
写回答
1回答
-
liuyubobobo
2017-12-25
因为这样做只是在swap函数内将a, b两个参数交换位置,而a,b只是传来参数的副本,没有实际交换外面传来的内容。可以自己实际测试一下,传给你的这个swap函数两个整数,调用结束后,在函数外面,这两个整形是没有实际交换的。
由于java没有设计针对基本数据类型的按引用传参的方式,所以只能借助arr参数来完成。而在C++中,可以直接借助地址运算符完成。注意,我们在C++中swap的函数声明是void swap(int &a, int &b),这和void swap(int a, int b)有本质的区别。
如果对这个知识点有疑问,我估计你刚刚大一,可能学习这个课程会费劲一些。关于这个课程的定位,参见:https://coding.imooc.com/learn/questiondetail/16248.html
加油!
00
相似问题