参数的传递

参数的传递,第1张

概述      一、概念的理解      1、参数传递:在使用函数时,要填入与函数形式参数个数相同的实际参数(有默认参数的除外),在程序运行过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据的处理和返回。      2、 形式参数:定义函数时函数名后面括号中的变量名;实际参数:调用函数时函数名后面括号中的表达式。通常情况下,我们将Sub或Function过程中定义的参数称为形式参


一、概念的理解

1、参数传递:在使用函数时,要填入与函数形式参数个数相同的实际参数(有默认参数的除外),在程序运行过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据的处理和返回。

2、 形式参数:定义函数时函数名后面括号中的变量名;实际参数:调用函数时函数名后面括号中的表达式。通常情况下,我们将Sub或Function过程中定义的参数称为形式参数;而调用Sub或Function时的参数称为实际参数,简称实参。

说明 1. 形参只能是变量,实参可以是常量、变量或表达式。在被定义的函数中,必须指定形参的类型。

2. 实参与形参的个数应一样,类型应一致。字符型和整型可以互相通用。

3. 在调用函数时,如果实参是数组名,则传递给形参的是数组的首地址

4.实参传递给形参是单向传递,形参变量在未出现函数调用时,并不占用内存,只在调用时才占用。调用结束后,将释放内存。执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数中的实参的值。

二、通过两个实例来说明一下按值传递与按地址传递的不同



1、通常,过程定义时,若形参名前面设置有关键字“Byval”,则指定它所对应的实参是按值传递的。在实参调用过程时,VB给形参分配一个临时存储单元,将实参变量的值复制到这个临时单元中。也就是说,按值传递参数时,传递的只是实参变量的副本,过程对形参的任何改变只在过程内部有效,不会影响实参变量本身。换句话说,一旦过程运行结束,对应的实参变量保持调用前的值不变。

2、过程定义时,若形参名前面没有关键字“Byval”,即缺省修饰词,或有Byref关键字时,则指定它是一个按地址传递的参数。按地址传递参数时,形参和实参公用内存的同一“地址”。因此,被调用过程中对形参的任何 *** 作都变成对相应实参的 *** 作,实参的值就会随过程体内对形参的改变而实时改变。

3、 通常实参是变量形式,则参数的传递方式完全由前面形参的前缀Byval,Byref决定,但当实参是常量、表达式形式,系统是强制按值方式传递参数;实参是数组、对象形式,系统是强制按地址方式传递参数,与其对应形参前缀设置无关。

三、选用参数传递的原则

一般来说,按地址传递要比按值传递参数更节省内存,效率更高,因为系统不必再为形参分配内存、再把实参的值拷贝给它。对于字符串型和数组参数,这种效率尤其显著。

选用参数传递方式的原则如下:

(1)如果要将过程中的结果通过形参返回给主调程序,则形参必须是按地址传递。这时实参必须是同类型的变量名,不能为常量或表达式。

(2)如果实参的作用仅仅是将其值单向传给形参,但并不想让过程体内对形参的改变来影响实参,这时形参一般应选用传值方式。这样可增加程序的可靠性,便于调试,减少各过程间的关联。

总结

以上是内存溢出为你收集整理的参数的传递全部内容,希望文章能够帮你解决参数的传递所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1288169.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存