Byval 和 Byref的区别
在VB中,提到过程和和函数,一定少不了参数,参数传递时过程中非常重要的问题。通过实际参数和形式参数的传递可以实现调用过程和被调用过程之间的信息交换。在这里首先要明白实参和形参。举个例子吧:
假设定义一个过程:
Sub Employee(Num As String,Name As String,Age As Integer) ——>形式参数表
则调用这一个过程:
Call Employee( bm , "ZhangJie" , 20 ) ——>实际参数
在Visual Basic中的参数传递有两种传递方式:按值传递和按地址传递。与两种方式相对应,声明通用过程时,参数表中形参的定义格式可扩展为:[ByVal|ByRef]<变量名>[()][As 类型]
一、按值传递参数(ByVal)
ByVal是把内存数值的拷贝给程序,所以改变的只是拷贝,内存原来的值是不会改变的。
ByVal :表示该参数是按值方式传递的。 你在函数中修改此参数的值不会造成调用这个函数的函数的变量值的改变。
举例:按值传递参数
Private Sub Command1_Click()
Dim x As Integer
x = 6
Print "调用Sub过程之前x="; x
Call Test(x)
Print "调用Sub过程之后x="; x
End Sub
Sub Test(ByVal m As Integer)
m = m + 5
End Sub
运行结果如下:
二、按地址传递参数(ByRef)
ByRef是把内存地址告诉程序,所以改变的直接就是内存中的数值,VB中默认的参数传递方式是ByRef.
ByRef :表示该参数按引用方式传递。 在函数中修改此参数的值会造成实参的值发生改变。
举例:按地址传递参数
Private Sub Command1_Click()
Dim x As Integer
x = 6
Print "调用Sub过程之前x="; x
Call Test(x)
Print "调用Sub过程之后x="; x
End Sub
Sub Test(ByRef m As Integer)
m = m + 5
End Sub
运行结果如下:
Byval 和 Byref的区别相关推荐
- VB中Byval和byref的区别
在VB中Byval 和byref怎么区别?简单来说Byval是传值,byref是传地址,ByVal :表示该参数是按值方式传递的.ByRef :表示该参数按引用方式传递.下面绿茶小编为大家详细介绍By ...
- 【原创】VBA学习笔记(15)VBA的参数传递:ByVal 和 ByRef 的区别
1 参数传递时的 byVal 和 byRef 区别的简单总结 目的:为了给其他程序的主动传递变量,而调用其他程序,并获得回调 本程序(主程序)调用其他程序(被调用程序)时,可以把参数传给 ...
- 以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值。
以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值: Sub Example()Dim x As Integer, y As Integerx ...
- ByVal和ByRef的区别
ByVal 传送参数内存的一个拷贝给被调用者.也就是说,栈中压入的直接就是所传的值. ByRef 传送参数内存的实际地址给被调用者.也就是说,栈中压入的是实际内容的地址.被调用者可以直接更改该地址中的 ...
- byval 和byref的区别,今天刚明白。
以前看一本书上,写着VB的两种参数传递方式:byval 和byref byval叫做"传值",想当于把值复制一份到新的变量中. 而byref叫做传址,相当于把原变量的地址传过去. ...
- ByVal与ByRef的区别
1.引用参数(ref)在可以作为引用参数在函数成员调用中传递之前,必须已明确赋值,而输出参数(out)在可以作为输出参数在函数成员调用中传递之前不一定要明确赋值,在该函数成员正常返回前都必须已明确赋值 ...
- VBA的参数传递:ByVal 和 ByRef 的区别
定义一个函数: Function fun(a As Integer, Optional ByVal b As Integer = 5)Debug.Print (a)Debug.Print (b)a = ...
- VB中Byval与Byref的区别。
1.byval是按值传递的方式,而byref是按地址的传递方式. 2.在程序中x是按值传递,而y是按地址传递,随后我们在程序中进行调用,因为在调用之前已经将z赋值为300,e赋值为400. 3.所以调 ...
- VB中的ByVal和ByRef的区别
ByVal是按值传递,形参的改变不会造成实参的改变. ByRef是按地址传递,形参的改变会造成实参的改变. 这就像是其它语言中的引用传递一样,如php中的 &$args 举个例子: Modul ...
最新文章
- ICLR 2019最佳论文揭晓!NLP深度学习、神经网络压缩夺魁 | 技术头条
- 大话设计模式--建造者模式 Builder -- C++实现实例
- 从建好到用好,阿里云原生微服务生态的演进
- Win10:tensorflow 学习笔记(1)
- 设计模式:享元模式(Flyweight)
- (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题
- linux内核那些事之mempolicy(1)
- VMware——虚拟机的安装
- 7——1 shelve 模块
- 如何使用Matlab实现数据的拟合
- android app内存分析,Android手机App内存占用测试方法
- Related Problems
- 【经典算法】:银行金额大写转换
- 每天一道大厂SQL题【Day01】
- 七夕第一波狗粮来啦!魏晨晒婚纱照,与妻子爱情长跑十年成眷属
- 几种常见外卖优惠券小程序的推广引流方式
- 数据库产品-易用性问题
- gmail邮箱中显示的名字如何修改?
- 图的遍历(搜索)算法 之 深度优先遍历算法
- 秘密福利偷偷分享!!!就此一天!!!过后删!!!
热门文章
- 按照拼音排序的SQL语句条件
- Photoshop使用技巧
- 2进制 16进制 计算机术语,十六进制转二进制计算器
- linux 进程间界面嵌套,WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口)...
- 国内银行英文简称及全称
- 一键抠图Portrait Matting人像抠图 (C++和Android源码)
- xshell免费版下载教程
- 中文文本纠错任务简介
- 【算法】计划看电影-java
- 实战python网络爬虫豆瓣_三分钟教会你利用Python爬虫实现豆瓣电影采集(实战篇)...