byref与byval的区别
首先解释一下什么是实参,什么是形参
过程中的参数列表叫做形参 。
调用过程时的参数列表就实参。
形参与实参的类型必须一致。
调用时将实参的值传递给形参。
Private sub command1_click()
Dim a as long ,dim b as long
a= 20
b = 30
call myfunc(a,b)
Print a,b
End sub
Private sub myfunc(byref x as long,byref y as long )
x=x*2
y =y*2
End sub
上面的 x ,y 就是形参 , 而a,b就是实参
ByVal(按值传递) 传值时先给形参开辟一个临时地址,将实参的内容传入这个临时地址,这样,传递后,形参与实参是在两上不同的地址中,也就是说他们是相互独立的
传址时(ByRef),是直接将实参的地址传递给形参,这样,形参与实参就共用一个地址,所以,形参内容的改变,也直接改变了实参的内容
做个比喻,
a,b比喻成两个杯子,分别装30、20升水,我们定义的过程s1,比喻为机器,机器功能是可以使杯子水变成原来的2倍,Call s1(a, b)相当于启动机器,a,x虽然名字不一样,但是在计算机内存里,就是一个东西(因byref),就是装30升水的那个杯子,“加工”后,变成60升;再看b杯子,b没有放入机器加工,而是机器生产出一个和b一样的杯子c,也装20升水(完全模仿b),放入机器加工的是c,c加工完后是40升,但b还是20升;过程s1执行完了,c杯子就消失了(作用域),并没有把其中的水传回给b
byref与byval的区别相关推荐
- 写给初学者:VB 中 ByRef 与 ByVal 参数传递方式的区别
简而言之,ByRef 和 ByVal 的区别在于参数源是否可以被函数修改,前者(默认方式)是可以被修改的,而后者是不能被修改的. 例: Private Function Func(ByRef argv ...
- byref和byval区别的正确理解
byref和byval其实按照字面上的理解来说,一个按照地址传递或者说指针,一个按照值传递,两个区别是什么呢,大众理解就是,按地址理解就是直接把它地址传进来,对形参的操作将影响实参.而按值传递就是co ...
- ByVal 与 ByRef(默认值) 的区别
'ByVal 与 ByRef(默认值) 的区别 'ByVal 按值传递 不改变实参 'ByRef 按地址传递 改变实参 Private Sub Form_Load() Me.Show Dim A As ...
- ByRef和ByVal
PK ByRef: 我们常说的传地址,也就是用一旦在使用过程中改变了引用的数值,那么原数值做相应的改变.可以说ByRef用的随波逐流. ByVal: 所谓的传值:无论在使用过程中如何操 ...
- VBScript的中ByRef和ByVal的不同
在VBScipt中ByRef表示的是地址的变化,而ByVal表示的是值得变化,比如 Dim i,j i=1 j=1 Function ByRefValue(ByRef val1) val1=val1+ ...
- ByRef vs. ByVal
VBS 中函数参数支持 ByVal 和 ByRef 两种传递方式,它们的区别是什么呢? ByRef 表示传递的是指向对象的指针,函数体内修改变量值时将直接修改指针所指向的对象值,参数定义时如果没有声明 ...
- byref和byval什么时候该使用什么时候不该使用
214/01/16 1.按值传递 byval 即复制值,在过程内修改参数的值将不影响原来的变量; 2.按地址传递 byref 则相当于给变量取个别名,在过程内修改参数的值将影响原来的变量: 3.以表达 ...
- vbs过程参数--byref和byval
vbs过程参数--byref(默认)和byval 请看例子: On error resume NextSub A1(byval s)s = s & "125" End Su ...
- WEB开发文档2 总结
转自:http://blog.donews.com/lvjiyong/archive/2006/06/29/931071.aspx 怎样将后台生成的在内存中的图象显示到客户端 Microsoft IE ...
最新文章
- 2022-2028年中国高密度聚乙烯(HDPE)行业市场发展调研及投资前景分析报告
- 使用Oracle 的 imp ,exp 命令实现数据的导入导出
- 安装linux系统报softlock,soft lockup 解决思路
- 一种简单的redis分布式锁方案
- OpenCV三种立体匹配求视差图算法总结
- 阿里云天池平台官方出品!从0到1层层拆解天池大赛赛题 | 文末送书
- 取KindEditor中的textarea的值区不到的解决方案,固定kindEditor的高度
- Docker与Kubernetes,是敌是友?
- GoldenGate Logdump基本使用
- Nginx下配置小绿锁https
- LeetCode - Maximum Subarray
- Logstash配置方法
- CAN LIN CANOE DB9 接口定义
- 嵌入式开发笔记——调试组件SEGGER_HardFaultHandle
- 信号与系统:综述【知识梳理】
- excel提取身份证出生日期_Excel如何从身份证号码中提取年龄
- STM32 BOR/POR/PDR
- 用JavaFX几个简单动画——旋转风车、运动的圆
- 使用Docker搭建ceph群集(nautilus版本)
- 深耕ElasticSearch - 认识搜索引擎的索引