形参与实参的区别,原来形参是庶子所以不得宠

形参与实参的区别,原来形参是庶子所以不得宠

形参:

形式参数,形式就可以理解为它是一个虚拟的、表面的不是真实存在的一个变量,它一般用在给函数名(方法名)和函数体(方法体)中使用的参数。我们可以这么来形容:它就是在调用的过程中传递的参数,这个时候实参就赋值给了这个形参。往深层次里面看一下就是在方法被调用的时候,虚拟机才会给它分配空间(内存单元),在调用过程结束后就会释放内存单元。

形参与实参的区别,原来形参是庶子所以不得宠

举个例子

一个大户人家里面有两个儿子,分别是形参、实参。实参是嫡子,形参是庶子,当有有客人来的时候发生的时候(我们可理解为到了调用的时候),这个大户人家为了面子,让外人看起来“我们对庶子也是很好的的!”就给庶子(形参)和实参内饰环境一样的一间房(实参赋值),平时庶子是没有房间的!

等到客人走了(调用结束),就会把分配给庶子(形参)的房间(内存空间)收回来!

形参与实参的区别,原来形参是庶子所以不得宠

我们要知道形参只在方法内是有效的,是不会影响方法外的。因为外面的人跟他更不是一家,所以不会分给他房子!

实参:
实际参数,用于调用时传递给方法的参数。实参在传递给别的方法之前是要被预先赋值的。他可以是常量、变量、表达式、函数,同时它必须有个确定的值,只有这样到后面形参出现才能把值赋给形参。

(重点理解)我们在传递和调用的过程中只可以把实参传递给形参!因为实参比较得宠,所以它的待遇就是一个标准,不能把形参的值反向作用到实参上。这不就等于让把嫡子的配置降低了,这种行为是在家族规矩中不允许的!

形参与实参的区别,原来形参是庶子所以不得宠

在方法调用过程中,形参的值也许会发生改变,但实参的值不会发生改变。
而在引用传递调用的机制中,实际上就是是将实参引用的地址传递给了形参,所以任何发生在形参上的改变也会发生在实参变量上。
 形参与实参的区别,原来形参是庶子所以不得宠

形参与实参的区别,原来形参是庶子所以不得宠形参和实参的区别

  1. 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
  2. 形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参   从而实现主调函数向被调函数的数据传送。
  3. 实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。
  4. 函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
  5. 当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值。
发表评论

相关文章