【VB技巧】VB 中 Byref与Byval传值的区别

  • A+
所属分类:lcx

VB 变量、参数传递的基本知识:

ByRef 与 ByVal 传值的区别

传递方式:
    ByRef 表示该参数按实际地址传递,源数据可以被调用的函数修改。ByRef 是 Visual Basic 的缺省、默认选项。
    ByVal 可选的,表示该参数按值传递,源数据不会被调用的函数修改。

参数含义:
    ByRef 是传址,就是把变量的地址传送给函数,在函数的内部对参数的修改,实际上是对变量地址里的数据修改,所以当函数返回的时候,传进来的变量也是跟着改变的。
    传送参数内存的实际地址给被调用者。也就是说,栈中压入的是实际内容的地址。被调用者可以直接更改该地址中的内容。

    ByVal 是传值,顾名思义,就是把变量的数据传给函数,函数内部对其做任何处理都不会影响变量本身的值。
    传送参数内存的一个拷贝给被调用者。也就是说,栈中压入的直接就是所传的值。

演示代码:
    Private Function TestByVal(ByVal Tmp1 As Long)
        Tmp1 = Tmp1 + 1
    End Function
   
    Private Function TestByRef(ByRef Tmp1 As Long)
        Tmp1 = Tmp1 + 1
    End Function
   
    Private Sub Form_Load()
        Dim Tmp As Long
        Tmp = 1
       
        TestByVal Tmp
        MsgBox Tmp
        '显示:Tmp 的值为 1。
       
        TestByRef Tmp
        MsgBox Tmp
        '显示:Tmp 的值为 2,因为 TestByRef 中的参数 Tmp1 为 ByRef。
        'ByRef 是按地址传递,因此在 TestByRef 中对 Tmp1 进行修改后,将会导致源参数 Tmp 的值也被修改。
    End Sub

文章来源于lcx.cc:【VB技巧】VB 中 Byref与Byval传值的区别

相关推荐: ShopEx 4.85 网上商店系统后台拿WebShell

转自:http://t00ls.net/thread-13838-1-1.html,作者:hiicome。 刚在官方下了一个最新的自己测试了一下,很简单的。 首先进网站后台(废话),打开以下Url,进行文件编辑:     http://localhost/sh…

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: