黑马程序员技术交流社区

标题: 这个程序中的被调函数中参数的值是怎么传回主函数的? [打印本页]

作者: 梦想起航    时间: 2015-7-7 22:11
标题: 这个程序中的被调函数中参数的值是怎么传回主函数的?
public class bubbleSort {
        public static void bubble(int [] arr){   //<--这个被调用的函数中的数组值是怎么传到主函数中去的?
                for(int x=0;x<arr.length-1;x++){     //不是说void类型的函数没有返回值吗?
                        for(int y=0;y<arr.length-x-1;y++){
                                if(arr[y]>arr[y+1])
                                {
                                        int temp=arr[y];
                                        arr[y]=arr[y+1];
                                        arr[y+1]=temp;
                                }
                        }
                }
               
        }
        public static void printArray(int [] array){
                System.out.print("[");
                for(int x=0;x<array.length;x++){
                        if(array[x]!=array[array.length-1])
                                System.out.print(array[x]+",");
                        else
                                System.out.println(array[x]+"]");
                }
        }
public static void main(String args[]){
        int [] arr={4,7,5,9,4,2,1};
        printArray(arr);
        bubble(arr);
        printArray(arr);
}
}
作者: palysh    时间: 2015-7-7 23:11
你这里面跟返回值没有任何关系,是关于调用函数时 传值和传址的问题。
显然你的public static void bubble(int [] arr) 函数的参数是一个int型的数组(相当于指针),在调用该函数时需要传递一个int型数组的地址,意思就是让arr指向一个int型数组,而函数内部对arr指向的数组改变其中的值时,那么这个数组中的值就确确实实的改变了
作者: 梦想起航    时间: 2015-7-8 17:56
palysh 发表于 2015-7-7 23:11
你这里面跟返回值没有任何关系,是关于调用函数时 传值和传址的问题。
显然你的public static void bubble( ...

似乎明白了,感谢大神




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2