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

admin 2021年4月3日18:56:00评论240 views字数 1001阅读3分20秒阅读模式

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…

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月3日18:56:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【VB技巧】VB 中 Byref与Byval传值的区别https://cn-sec.com/archives/319272.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息