黑马程序员技术交流社区

标题: 关于数组最值问题,求解...(已解决) [打印本页]

作者: 曹俊    时间: 2012-5-19 10:59
标题: 关于数组最值问题,求解...(已解决)
本帖最后由 曹俊 于 2012-5-19 17:20 编辑


第6行:int  max = getmax(arr);
能不能写成:int max = getmax(int[] arr);                           
它主函数不是调用下面的方法么,那调用的话,为什么后面的函数列表不能一样呢?

作者: 孙宇晨    时间: 2012-5-19 11:06
如果写成:int max = getmax(int[] arr);      
就是从新new了一个数组.名字是arr 就不是原来内个里面有七个数据的数组了
你提供的代码 getmax()方法 需要提供一个 int型的数组作为参数 返回值是一个int型的变量
原文 先int []arr =(5,1,6,4,2,8,9);
然后int一个max接收=getmax(传参 arr)
是没有问题的
作者: 于陈    时间: 2012-5-19 11:10
int max =getmax(arr);
arr就是一个int型数组,与你在方法中定义的形式参数列表相符合,所以肯定没问题的。
至于为什么能是int[] arr,那是因为这里是实参,arr数组你在上面的两行已经定义过了~这里再来一次int[] arr,当然不行了~
放在函数定义的里面的括号里面的参数列表叫形式参数;
在函数调用时传进来的参数叫实参;
形参和实参顾名思义,应该很好理解吧~
注意一点,实参可以使是函数,表达式,变量,常量,但是必须有一个确定的值。
还有形参与实参类型必须匹配。

作者: 程旦    时间: 2012-5-19 11:12
楼主  函数定义和函数调用不一样   定义的时候肯定要声明参数是什么类型 这叫形参    调用的时候把实际的东西传给它就行了。。。。。这块是基础 楼主好好看看函数调用这块
作者: 曹俊    时间: 2012-5-19 11:16
搜噶,说白了,我还是没明白实参和形参的概念,谢谢你们啊。。。{:soso_e183:}
作者: 杨康    时间: 2012-5-19 11:20
当然不行,因为是调用下面的函数,而调用的时候这个过程是把调用的数组传送进下面函数的方法,你这样就成新定义了一个数组了。没有传送数组进去,是不会运算的。
作者: 李哲    时间: 2012-5-19 11:22
应该好好看看函数如何定义。举个通俗的例子:getmax(人  XXX)
                                                               你使用的时候不能getmax(人  XXX)吧?应该getmax(张三)。

我想是因为你定义的int[] arr={5,1,6,4,2,8,9}; 名称也叫arr,函数里面也是arr,所以让你误解。
其实arr只是一个代号,两者恰好相同。


作者: 8161776    时间: 2012-5-19 11:31
肯定不能写成int max = getmax(int[] arr);
这个里面的参数是实参,必须是一个实实在在的对象,你这样写的话只是一个形参,
作者: 陌花╮有意、    时间: 2012-5-19 11:35
不能 第6行调用只能直接传递上面的数组
作者: 凡延海    时间: 2012-5-19 12:00
楼主如果该成那样的话,编译就会报错因为int max=getmax(int [] arr);表示又重新定义了一个数组 arr 这样的话传递就是重新定义的arr。形式参数与实际参数从应用角度说就是:行参给要传递的参数进行定义,看看要传递什么类型的参数以及在方法中应用的参数名称;实际参数就是把相同类型的变量给调用的方法,当然了给的这个参数变量一定是赋值的。
楼主似乎是在求最小值,呵呵。
作者: 彩虹    时间: 2012-5-19 12:10
      第6行:int  max = getmax(arr);不能写成:int max = getmax(int[] arr);  的形式
      因为你先前已经定义了一个int []arr =(5,1,6,4,2,8,9);    的arr数组,在将其作为getmax的实参传递时,只需引用数组名,即代表该一维数组,int  max = getmax(arr);这样调用是正确的,如果这样定义int max = getmax(int[] arr); 那arr数组就相当于又定义了一次,同一个类中是不能重复定义变量和数组的
作者: 荣天    时间: 2012-5-19 12:35
不行的:
int max = getmax( arr);   向getmax传入的参数 数组arr。
int型的数组  arr ,getmax接受的是int型的参数数组,  你之前已经定义好了。

如果int max = getmax(int[] arr);   向getmax传入 编译运行出现错误的;
作者: 曹俊    时间: 2012-5-19 15:04
李哲 发表于 2012-5-19 11:22
应该好好看看函数如何定义。举个通俗的例子:getmax(人  XXX)
                                           ...

嗯嗯,俩代码一样,搞的我真的是误解了...
作者: 黑马罗坚    时间: 2012-5-19 15:31
nt max = getmax(int[] arr);    这条语句是错误的不管你之前有没在方法里定义过arr的句柄 即使没有也不能这样写  编译器是会报错的
你要重新创建一个对象传进需是 int max=getMax(new int[5]);
参数里不应该有定义语句 而是传一个试试在在的对象合变量




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