数组作为函数参数时的传递问题
2017-03-29 11:00
211 查看
之前,一直认为将数组用于函数传递,函数内对数组的改变也会影响调用函数外的该数组,事实也是如此。但是,实际运用中可能会犯一个错误。
示例代码如下:
public class test { public static void main(String[] args){ int[] array = {1,1}; tt1(array); tt2(array); System.out.println(); } public static void tt1(int[] array){ array[0]=array[0]+1; int[] a={array[0],array[1],0}; array=a; printArray(array); } public static void tt2(int[] array){ array[1]=array[1]+1; printArray(array); } //打印数组 public static void printArray(int[] array){ String s="["; for(int i=0;i<array.length;i++){ s=s+" "+array[i]; } s=s+"]"; System.out.println(s); } }
输出:
[2 1 0]
[2 2]
上面代码中,初始数组array={1,1},在tt1函数中先改变为array={2,1},再重新指向另一个新的数组。此时,tt1内的array={2,1,0}。执行完tt1后,开始执行tt2,这时发现array={2,1},而不是{2,1,0},执行完tt2后,tt2内的array={2,2}。
这时,我们发现,当在函数内将数组变量指向新的数组时,原来函数外的数组并不该变。这是因为函数的参数传递的是数组的引用,所以在函数内对数组的元素做操作时,函数外的数组也会改变。但如果在函数内将数组变量指向新的数组,则函数内的数组变量不再指向函数外的数组区域。
相关文章推荐
- 作为函数参数的多维数组想到的两个问题
- 指针数组作为函数参数的使用问题
- 数组名、数组名取地址以及作为函数传递带来的问题
- c++中关于数组作为函数参数并传递数组元素个数的几种有效方法的讨论
- 一维或多维数组作为函数参数的问题
- C++中关于二维数组作为函数参数传递的问题
- 实例解析使用指针作为函数参数传递需要注意的问题
- 数组作为函数参数进行传递
- C++指针作为函数的参数进行传递时注意的问题
- 利用数组名作为函数参数传递排序和用指针进行排序
- c++之指针作为函数参数传递的问题
- perl 函数参数中传递数组和引用的一些问题
- C/C++面试题--数组作为函数参数的几个问题
- C++用指针变量作为函数的参数接受数组的值的问题的总结
- 关于指针和数组对申请内存malloc和作为参数传递的一些问题
- 数组作为函数参数的传递
- (转)数组名、数组名取地址以及作为函数传递带来的问题
- C++用指针变量作为函数的参数接受数组的值的问题的总结
- json数组作为参数传递给java时候object问题
- 数组名、数组名取地址以及作为函数传递带来的问题