问一下,在VB的函数中有的参数用ByVal,有的不用,用的话是按值传递,不用ByVal是代表什么意思呢?
解决方案 »
- 怎么把stdPicture类型直接转成2维RGBQUAD结构体?
- 帮忙解释一下第二,三两行是什么意思?
- 从Access数据库批量添加数据到列表(在线等待6小时)
- 如何解决半行字问题?--------请高手、中手、低手都来参考参考!!!
- vb 如何控制EXCEL 页眉字体和下划线
- ★开发ASP组件(实例及技术文档)◆,希望大家补充AND接分!!◆技术共享★
- 如何在我的程序中取得另一个程序中的输入框的句柄?
- 用那个API可以获取屏幕颜色代码
- 小弟菜鸟,哪位高手讲解一下timer控件的用法。
- 高手!我来送分!!,怎么能打印出DATAGRID的表格!!
- datagrid怎么获取选中那一行的数据
- 关于类的Class_Initialize
这两个是子过程的参数传递时,指定参数按什么传递的
ByVal(按值传递)
ByRef(按地址传递)
具体这样来理解:
过程中的参数列表,我们称形参
调用过程时的参数列表,我们称实参在调用时,我们要将实参的值传递给形参,这样过程才能拿这些数据参与计算并实现一些功能
那么在传递的过程中,就存在这两种传递方式
传值时(ByVal),是先给形参开辟一个临时地址,将实参的内容传入这个临时地址,这样,传递后,形参与实参是在两上不同的地址中,也就是说他们是相互独立的
传址时(ByRef),是直接将实参的地址传递给形参,这样,形参与实参就共用一个地址,所以,形参内容的改变,也直接改变了实参的内容通过上面的分析,你只要记得:
按值传递时(ByVal),形参的改变不会影响到实参
按址传递时(ByRef),形参的改变,会影响到实参
Declare Function GetData(ByVal data AS Double,sTime AS long) AS Integer
那么说data就是按值传递了,而sTime就是按地址传递,只要不加ByVal,那么默认的就是ByRef传递参数了。是吗?
byref传地址
具体什么区别,看一下书就明白了