值传递:
在函数范围内,改变变量值的大小,都不会影响到函数外边的变量值。
引用传递:
在函数范围内,对值的任何改变,在函数外部也有所体现,因为传引用传的是内存地址。
也就是说值传递只传递数值,引用传递传递的是内存地址。如果内存地址上的值发生改变,那么这个值就跟着变化。
值传递与引用传递示例:
形参:
形参全称为“形式参数”,目的是用来接收调用该函数时传递的参数。
实参:
实参,全称为"实际参数"。顾名思义就是实际存在的参数。在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”。
形参与实参示例:
从下图就可以很明显看出来形与实的区别。
值传递与引用传递区别-示例题:
函数f()、g()的定义如下所示。已知调用f时传递给其形参x的值是1,若以传值方式调用g,则函数f的返回值为__(1)__;若以传引用方式调用g,则函数f的返回值为__(2)__ 。
f()函数
public int f(int x){ int a=5; a=g(x); return a+x; }
g()函数
public void g(int y){ y=y+1; return y; }
(1)A、3 B、4 C、6 D、7
(2)A、3 B、4 C、6 D、7
答案解析:
这里先是传递了一个形参,那么就是正常的传递,形参x=1,传递到函数g当中,y=1+1;那么y=2正常传递回f函数,a=2,故而又最终(1)选项得a+x=2+1=3。选择A。
使用引用方式调用g,那么既然引用传递传递的就是实际的地址,我们讲x=1传递到函数g当中,发现原本的x就相当于y处理了,y=x=1,那么y=y+1也就是y=1+1;这里的y的结果是2,也就是修改了x上地址的值,故而return y就是return 2,我们在函数f中a=2是不变的,但是其中x的值变成了y的值,y是2,y=x,那么x=2,所以出现a+x=2+2,故而(2)结果是4.选择B。