首先解释一下什么是实参,什么是形参

过程中的参数列表叫做形参 。

调用过程时的参数列表就实参。

形参与实参的类型必须一致。

调用时将实参的值传递给形参。

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的区别相关推荐

  1. 写给初学者:VB 中 ByRef 与 ByVal 参数传递方式的区别

    简而言之,ByRef 和 ByVal 的区别在于参数源是否可以被函数修改,前者(默认方式)是可以被修改的,而后者是不能被修改的. 例: Private Function Func(ByRef argv ...

  2. byref和byval区别的正确理解

    byref和byval其实按照字面上的理解来说,一个按照地址传递或者说指针,一个按照值传递,两个区别是什么呢,大众理解就是,按地址理解就是直接把它地址传进来,对形参的操作将影响实参.而按值传递就是co ...

  3. ByVal 与 ByRef(默认值) 的区别

    'ByVal 与 ByRef(默认值) 的区别 'ByVal 按值传递 不改变实参 'ByRef 按地址传递 改变实参 Private Sub Form_Load() Me.Show Dim A As ...

  4. ByRef和ByVal

    PK ByRef:     我们常说的传地址,也就是用一旦在使用过程中改变了引用的数值,那么原数值做相应的改变.可以说ByRef用的随波逐流. ByVal:     所谓的传值:无论在使用过程中如何操 ...

  5. VBScript的中ByRef和ByVal的不同

    在VBScipt中ByRef表示的是地址的变化,而ByVal表示的是值得变化,比如 Dim i,j i=1 j=1 Function ByRefValue(ByRef val1) val1=val1+ ...

  6. ByRef vs. ByVal

    VBS 中函数参数支持 ByVal 和 ByRef 两种传递方式,它们的区别是什么呢? ByRef 表示传递的是指向对象的指针,函数体内修改变量值时将直接修改指针所指向的对象值,参数定义时如果没有声明 ...

  7. byref和byval什么时候该使用什么时候不该使用

    214/01/16 1.按值传递 byval 即复制值,在过程内修改参数的值将不影响原来的变量; 2.按地址传递 byref 则相当于给变量取个别名,在过程内修改参数的值将影响原来的变量: 3.以表达 ...

  8. vbs过程参数--byref和byval

    vbs过程参数--byref(默认)和byval 请看例子: On error resume NextSub A1(byval s)s = s & "125" End Su ...

  9. WEB开发文档2 总结

    转自:http://blog.donews.com/lvjiyong/archive/2006/06/29/931071.aspx 怎样将后台生成的在内存中的图象显示到客户端 Microsoft IE ...

最新文章

  1. 2022-2028年中国高密度聚乙烯(HDPE)行业市场发展调研及投资前景分析报告
  2. 使用Oracle 的 imp ,exp 命令实现数据的导入导出
  3. 安装linux系统报softlock,soft lockup 解决思路
  4. 一种简单的redis分布式锁方案
  5. OpenCV三种立体匹配求视差图算法总结
  6. 阿里云天池平台官方出品!从0到1层层拆解天池大赛赛题 | 文末送书
  7. 取KindEditor中的textarea的值区不到的解决方案,固定kindEditor的高度
  8. Docker与Kubernetes,是敌是友?
  9. GoldenGate Logdump基本使用
  10. Nginx下配置小绿锁https
  11. LeetCode - Maximum Subarray
  12. Logstash配置方法
  13. CAN LIN CANOE DB9 接口定义
  14. 嵌入式开发笔记——调试组件SEGGER_HardFaultHandle
  15. 信号与系统:综述【知识梳理】
  16. excel提取身份证出生日期_Excel如何从身份证号码中提取年龄
  17. STM32 BOR/POR/PDR
  18. 用JavaFX几个简单动画——旋转风车、运动的圆
  19. 使用Docker搭建ceph群集(nautilus版本)
  20. 深耕ElasticSearch - 认识搜索引擎的索引

热门文章

  1. 对话 UNIX: 使用 Screen 创建并管理多个 shell
  2. python兔子和獾_Pygame-依葫芦画瓢之兔獾大战
  3. 你真的会用区块链赚钱吗?论区块链的商业思维
  4. 华为认证Datacom考试内容
  5. 软考非计算机专业考难吗,非计算机专业考软考初级哪个更容易过
  6. 出版图书二维码,要如何制作呢?
  7. 塔塔露也能学会的算法(2) | 我有背包你有手么
  8. canvas 画线条
  9. 量化岗经典面试题——纸牌游戏
  10. 计算机网络——第四章、网络层