日期:2021年04月26日
作者:Commas
注释:网络上没有一个比较系统的VB6或者VBA的教程,于是打算利用中午休息的时间写一写这方面的教程,不喜欢写得很文绉绉,一切都以常用为前提进行介绍。因为要覆盖更多读者,所以本系列文章有些地方可能会介绍比较地通俗易懂,当然也会包含一些比较有意思的知识点,不喜勿喷,有问题敬请指出,有疑惑欢迎留言,大家一起讨论,共同进步,谢谢大家(^ _ ^) (^ _ ^)


目录

文章目录

  • 一、函数或过程参数修饰符关键字
  • 二、ByVal与ByRef的比较

一、函数或过程参数修饰符关键字

修饰符 说明
ByVal 表示修饰的参数按值传递
ByRef 表示修饰的参数按地址传递,ByRef是VB的缺省选项

二、ByVal与ByRef的比较

Option ExplicitPrivate Sub Form_Load()Dim intA As Integer'初始值为1intA = 1Debug.Print "初始值--------->intA的地址:" & VarPtr(intA), "intA=" & intA'ByValCall NumAddOne_ByVal(intA)Debug.Print "ByVal之后------>intA的地址:" & VarPtr(intA), "intA=" & intA'ByRefCall NumAddOne_ByRef(intA)Debug.Print "ByRef之后------>intA的地址:" & VarPtr(intA), "intA=" & intAEnd SubSub NumAddOne_ByVal(ByVal intX As Integer)
On Error Resume NextintX = intX + 1Debug.Print "NumAddOne_ByVal-intX的地址:" & VarPtr(intX), "intX=" & intX
End SubSub NumAddOne_ByRef(ByRef intX As Integer)
On Error Resume NextintX = intX + 1Debug.Print "NumAddOne_ByRef-intX的地址:" & VarPtr(intX), "intX=" & intX
End Sub
立即窗口(控制台)输出结果:初始值--------->intA的地址:1701858       intA=1
NumAddOne_ByVal-intX的地址:1701832       intX=2
ByVal之后------>intA的地址:1701858       intA=1
NumAddOne_ByRef-intX的地址:1701858       intX=2
ByRef之后------>intA的地址:1701858       intA=2

1、调用NumAddOne_ByVal,过程外部的intA=1(值未改变);而调用NumAddOne_ByRef,过程外部的值intA=2(值发生改变)

2、NumAddOne_ByVal中的intX的地址与intA的地址不一样,应该是开辟了一个新的内存空间,并复制了变量的值,所以过程内部修改,修改的是另外一个内存空间,并不会影响过程外部的变量值;

3、NumAddOne_ByRef中的intX的地址与intA的地址是一样,操作的内存地址是一致的,也就是对同一个内存空间进行操作,那么无论内部或者外部修改,指向该内存空间所有变量的值都会发生改变,如intX=2,打印出来的intA=2;


版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/116150845

第三章、vb6的ByVal与ByRef详解相关推荐

  1. 第七章httpd.conf主配置文件的详解

    版本V1.0 时间2012-10-04 版权GPL 作者itnihao 邮箱 itnihao@qq.com 博客 http://itnihao.blog.51cto.com 如需重新发行,请注明以上信 ...

  2. 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高...

    第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...

  3. Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

    Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...

  4. 第二十六章 数论——欧拉函数(详解与证明)

    第二十六章 数论--欧拉函数(详解与证明) 欧拉函数 1.互质 2.欧拉函数的定义 3.欧拉函数的公式 4.欧拉函数的证明 5.欧拉函数的使用 (1)问题一: 思路 代码 (2)问题二: 思路 cas ...

  5. 数据库中北大学第二章ppt总结和课后习题详解(小宇特详解)

    数据库中北大学第二章ppt总结和课后习题详解(小宇特详解) 第2章 数据模型与系统结构 2.1 数据模型的基本概念 现实世界--具体事物->信息世界--概念模型->机器世界--DBMS支持 ...

  6. Spring Boot项目(Maven\Gradle)三种启动方式及后台运行详解

    Spring Boot项目三种启动方式及后台运行详解 1 Spring Boot项目三种启动方法 运行Application.java类中的Main方法 项目管理工具启动 Maven项目:mvn sp ...

  7. TCP 三次握手和四次挥手详解

    1. TCP 报文格式详解 (1). 源端口和目的端口字段--各占 2 字节,标识了发送方和接收方的应用进程,如2210,80端口 (2). 序号字段--占 4 字节,TCP 连接中传送的数据流中的每 ...

  8. 面渣逆袭:三万字,七十图,详解计算机网络六十二问(收藏版)

    大家好,我是老三,开工大吉,虎年第一篇,面渣逆袭系列继续! 这次给大家带来了计算机网络六十二问,三万字,七十图详解,大概是全网最全的网络面试题. 建议大家收藏了慢慢看,新的一年一定能够跳槽加薪,虎年& ...

  9. 计算机网络--七层结构(三)会话、表示、应用层详解

    一.应用层概述 OSI模型后三层一般统称为应用层位于计算机网络体系结构的最上层,前面四层做的所有事情就是为了它服务,他也是设计和建立计算机网络的最终目的,通俗的讲,就是我们开发的应用软件,就处于这一层 ...

最新文章

  1. Latex使用简单总结
  2. J2EE架构[三层]
  3. 009_Redis的事物
  4. python和access哪个实用_access和python学哪个
  5. c++ 9.程序流程结构
  6. java hibernate 多对多_java - hibernate多对多问题
  7. 潮流趋势UI素材|梯度半透明、透明套件
  8. Express框架学习笔记-静态资源的处理
  9. Vue简易购物车实例
  10. 运维 之 常用运维工具
  11. 理解多线程(四)--原子量和原子操作
  12. java swing 图片gif_Java swing显示gif
  13. tf.sigmoid
  14. linux安装frps服务,Debian手动搭建frps服务端
  15. mac pro 系统升级带来的问题
  16. 网络基础知识汇总学习
  17. 期货反向跟单--戏剧性的事实
  18. 7-62 贴“福”字
  19. 【C语言】你知道.c文件是如何变成.exe文件的吗
  20. 一个 简约 干净 纯净的网址导航 净搜导航

热门文章

  1. C++实现基于博弈树的5x5一子棋人机对战
  2. Springboot科学养宠 omap1计算机毕业设计-课程设计-期末作业-毕设程序代做
  3. SPI接口的MISO和MOSI连接时是否需要交叉接? SI和SO呢?
  4. 服务器断电mysql文件丢失_服务器断电了怎么恢复数据?
  5. Linux内存卡槽故障判断,内存插槽损坏的三种常见故障
  6. 如何使用STM32指南者LCD显示图片
  7. JS实现点击按钮切换图片
  8. 利用DFS解决太平洋大西洋水流问题
  9. 【配电网重构】基于粒子群算法实现最小化功率损耗的配电网重构附matlab代码
  10. MySQL常用SQL(含复杂SQL查询)