大家好,欢迎来到IT知识分享网。
今天的内容绝对是我上学时候的阴影,老师在上面讲什么是实行参数,什么是实际参数,什么是按值传递,什么是按址传递,听的我头都大了,今天我尽量用最容易理解的语言结合实际例题来解释这些名词。
形式参数和实际参数
“形式参数”和“实际参数”我们一般都简称“形参”和“实参”,我们下文也这样称呼。
什么是参数呢?假如我们要建一座楼,必须要知道它的高,宽,结构等等,这些数据就是参数。再比如我们要测量一个长方形操场的面积,我们都知道长方形面积计算公式是长×宽,想要计算它的面积,就得知道长和宽的数据,把它们代入公式就能求出面积,这里的长和宽就是参数。那么什么是形参和实参呢?
我们创建一个函数来解释:
在函数过程中,声明的公共变量c和k就是形参,而在实际调用中与形参相对应的参数8和7就是实参。
形参相当于变量
实参相当于初始值
这样就好理解了。
参数传递
上面的例子,我们在实际调用中输入了参数8和7,然后函数MianJi依次把这两个参数传递给形参c和k,然后再执行函数过程中的语句,这个过程就叫参数传递。参数传递有两种方式,一个是按值传递,一个是按址传递。
按值传递
在声明过程中,形参前面加上关键字“ByVal”,就规定了这个参数是按值传递。用这种方式传递的参数并不是参数本身,而是参数的副本,如果在过程中改变了这个值,改变的只是副本,而不会影响变量本身。我们通过一个例子来看:
按理说,实参15传递给形参a,然后执行过程中的语句,a被赋值为88,但是加了关键字ByVal就变成按值传递,改变的只是副本15,变量本身还是实参15。
“让子弹飞”大家都看过吧,黄四郎被绑票,其实绑的是替身,他本人并没有事儿,就是这个意思,按值传递传的就是替身。
按址传递
如果在形参前面加上“ByRef”,就规定了这个参数是按址传递的,如果不加也默认是按址传递。用这种方式传递参数过程用变量的内存地址去访问实际变量的内容,可以永远改变这个变量的值,所以也会变动实参变量本身。
需要注意的是,当变量声明“ByRef”的时候,如果实参是一个常量,或者是一个表达式,尽管形参按地址传递,但是实际上还是按值传递的。
按址传递时,形参和实参公用一个内存地址,所以形参和实参的数据类型必须相同,否则会出现“类型不匹配”的错误。
我把今天的知识内容用一个示例来给大家解释,需要的同学可以在文章末尾下载。
运行效果:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/108113.html