第三章、vb6的ByVal与ByRef详解
日期: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详解相关推荐
- 第七章httpd.conf主配置文件的详解
版本V1.0 时间2012-10-04 版权GPL 作者itnihao 邮箱 itnihao@qq.com 博客 http://itnihao.blog.51cto.com 如需重新发行,请注明以上信 ...
- 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高...
第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- 第二十六章 数论——欧拉函数(详解与证明)
第二十六章 数论--欧拉函数(详解与证明) 欧拉函数 1.互质 2.欧拉函数的定义 3.欧拉函数的公式 4.欧拉函数的证明 5.欧拉函数的使用 (1)问题一: 思路 代码 (2)问题二: 思路 cas ...
- 数据库中北大学第二章ppt总结和课后习题详解(小宇特详解)
数据库中北大学第二章ppt总结和课后习题详解(小宇特详解) 第2章 数据模型与系统结构 2.1 数据模型的基本概念 现实世界--具体事物->信息世界--概念模型->机器世界--DBMS支持 ...
- Spring Boot项目(Maven\Gradle)三种启动方式及后台运行详解
Spring Boot项目三种启动方式及后台运行详解 1 Spring Boot项目三种启动方法 运行Application.java类中的Main方法 项目管理工具启动 Maven项目:mvn sp ...
- TCP 三次握手和四次挥手详解
1. TCP 报文格式详解 (1). 源端口和目的端口字段--各占 2 字节,标识了发送方和接收方的应用进程,如2210,80端口 (2). 序号字段--占 4 字节,TCP 连接中传送的数据流中的每 ...
- 面渣逆袭:三万字,七十图,详解计算机网络六十二问(收藏版)
大家好,我是老三,开工大吉,虎年第一篇,面渣逆袭系列继续! 这次给大家带来了计算机网络六十二问,三万字,七十图详解,大概是全网最全的网络面试题. 建议大家收藏了慢慢看,新的一年一定能够跳槽加薪,虎年& ...
- 计算机网络--七层结构(三)会话、表示、应用层详解
一.应用层概述 OSI模型后三层一般统称为应用层位于计算机网络体系结构的最上层,前面四层做的所有事情就是为了它服务,他也是设计和建立计算机网络的最终目的,通俗的讲,就是我们开发的应用软件,就处于这一层 ...
最新文章
- Latex使用简单总结
- J2EE架构[三层]
- 009_Redis的事物
- python和access哪个实用_access和python学哪个
- c++ 9.程序流程结构
- java hibernate 多对多_java - hibernate多对多问题
- 潮流趋势UI素材|梯度半透明、透明套件
- Express框架学习笔记-静态资源的处理
- Vue简易购物车实例
- 运维 之 常用运维工具
- 理解多线程(四)--原子量和原子操作
- java swing 图片gif_Java swing显示gif
- tf.sigmoid
- linux安装frps服务,Debian手动搭建frps服务端
- mac pro 系统升级带来的问题
- 网络基础知识汇总学习
- 期货反向跟单--戏剧性的事实
- 7-62 贴“福”字
- 【C语言】你知道.c文件是如何变成.exe文件的吗
- 一个 简约 干净 纯净的网址导航 净搜导航