一、概念的理解
1、参数传递:在使用函数时,要填入与函数形式参数个数相同的实际参数(有默认参数的除外),在程序运行过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据的处理和返回。
2、 形式参数:定义函数时函数名后面括号中的变量名;实际参数:调用函数时函数名后面括号中的表达式。通常情况下,我们将Sub或Function过程中定义的参数称为形式参数;而调用Sub或Function时的参数称为实际参数,简称实参。
说明 1. 形参只能是变量,实参可以是常量、变量或表达式。在被定义的函数中,必须指定形参的类型。
2. 实参与形参的个数应一样,类型应一致。字符型和整型可以互相通用。
3. 在调用函数时,如果实参是数组名,则传递给形参的是数组的首地址
4.实参传递给形参是单向传递,形参变量在未出现函数调用时,并不占用内存,只在调用时才占用。调用结束后,将释放内存。执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数中的实参的值。
二、通过两个实例来说明一下按值传递与按地址传递的不同
1、通常,过程定义时,若形参名前面设置有关键字“Byval”,则指定它所对应的实参是按值传递的。在实参调用过程时,VB给形参分配一个临时存储单元,将实参变量的值复制到这个临时单元中。也就是说,按值传递参数时,传递的只是实参变量的副本,过程对形参的任何改变只在过程内部有效,不会影响实参变量本身。换句话说,一旦过程运行结束,对应的实参变量保持调用前的值不变。
2、过程定义时,若形参名前面没有关键字“Byval”,即缺省修饰词,或有Byref关键字时,则指定它是一个按地址传递的参数。按地址传递参数时,形参和实参公用内存的同一“地址”。因此,被调用过程中对形参的任何操作都变成对相应实参的操作,实参的值就会随过程体内对形参的改变而实时改变。
3、 通常实参是变量形式,则参数的传递方式完全由前面形参的前缀Byval,Byref决定,但当实参是常量、表达式形式,系统是强制按值方式传递参数;实参是数组、对象形式,系统是强制按地址方式传递参数,与其对应形参前缀设置无关。
三、选用参数传递的原则
一般来说,按地址传递要比按值传递参数更节省内存,效率更高,因为系统不必再为形参分配内存、再把实参的值拷贝给它。对于字符串型和数组参数,这种效率尤其显著。
选用参数传递方式的原则如下:
(1)如果要将过程中的结果通过形参返回给主调程序,则形参必须是按地址传递。这时实参必须是同类型的变量名,不能为常量或表达式。
(2)如果实参的作用仅仅是将其值单向传给形参,但并不想让过程体内对形参的改变来影响实参,这时形参一般应选用传值方式。这样可增加程序的可靠性,便于调试,减少各过程间的关联。
分享到:
相关推荐
参数传递 单个参数传递 多个参数传递 传入单个实体(JavaBean/Map) 传入多个实体 传入集合 使用场景 在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,...
将参数传递给水晶报表
网页间参数传递例子网页间参数传递例子网页间参数传递例子网页间参数传递例子网页间参数传递例子
此文档为总结的Matlab GUI设计中,不同控件及不同GUI界面间的参数传递方法,希望对下载者有帮助。
kettle定时加载数据,并且实现多参数传递,高效处理复杂业务逻辑
c# 调用C++编写 的DLL函数各种参数传递问题。数据处理问题等等。
使用一般参数传递方式,实现简单计算器的加减乘除后端接口功能。 Http://localhost:8080/simplecalculator
用图片的和代码的方式解释指针参数传递内存
JNI 各种参数传递,基本数据类型,自定义对象,系统对象
一个简单的matlab GUI控件之间的参数传递实例,适用于数组、字符串等变量的参数传递,程序简单明了,可直接套用,适用于GUI初学者。
12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值...
C++ 与C#之间的指针参数传递,实现无限量数据的传递,轻松无压力,方便在C++里面获取或者从C#传递数据到C++的动态库调用内。
本文档针对于Qt C++代码,包括窗体新建、窗体之间的参数传递等
13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....
VB过程中使用的参数分为实参和形参,简单的讲,在过程定义中给定的参数是形参,而在过程调用语句中给定的参数是实参。...对参数传递方式的正确判别是过程学习中的一个难点,也是等级考试中的一个考点
C#中两个窗体之间的参数传递,在一个窗体的文本框中输入数据,按确定后在另一个窗体中显示。
11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java...
c# 参数传递,参数调用,在运行处输入,程序路径+要传递的值,即可打开程序,在界面上显示值
c#参数传递 c#参数传递 c#参数传递 c#参数传递 c#参数传递 c#参数传递
C语言 函数调用 参数传递机制 探讨 txt