vb 中形参 实参 ByVal ByRef 有什么实例?
编程业余爱好者..
我也百度搜了,但是说的我也看不明白,都是专业属于...
别鄙视我,给我举个简单的例子呗.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
编程业余爱好者..
我也百度搜了,但是说的我也看不明白,都是专业属于...
别鄙视我,给我举个简单的例子呗.
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
这里“形参”就是
p1
和p2
,“实参”就是a
和b
。调用
Foo
时,系统把a
复制了一份传给p1
,因此改变p1
的值不影响a
。而p2
代表对b
变量的引用,改变p2
也会让b
变化。好久不写 VB 了,有错还请各位指正。
形参就是预设的可传入参数,Foo 声明了接受两个参数,p1 和 p2。这个时候实际上p1 和 p2只是理想状态,并不是实际参数,所以叫形参
调用Foo的时候传进去两个实际的,有意义的参数,1和2是实际参数,所以叫实参
先弄明白形参和实参,形参是定义函数时括号里的参数,实参就是使用这个函数时实际上往里传入的参数。
再弄明白,变量是存在内存里的,每个变量会有属于自己的一块独立的内存空间,每个内存空间又有地址,通过地址能找到这块内存。
然后看这两个英文的意思,ByVal:按值传递,ByRef:按地址传递。
什么是按值传递呢?就是先给形参开辟一个新的内存空间,将实参的内容传入这个新的内存空间,这样传递后,形参与实参是在两个不同的内存空间中,也就是说他们是相互独立的,你在函数中怎么折腾这个形参,折腾的都是这个临时内存空间,和实参没关系,它静静的躺在自己的小屋里。
什么是按地址传递呢?就是直接将实参的内存空间地址传递给形参,这样,形参与实参就共用一块内存,所以,形参内容的改变也直接改变了实参的内容,你在函数中折腾形参,等同于折腾实参。
所以一般情况下,函数都会有个返回,因为函数默认都是按值传递,如果不返回,这个函数执行完,那些临时内存空间就释放了,执行半天啥也没了,当然,如果你定义了按地址传递,那就无需返回了。