VB sub和function过程的区别

来源:百度知道 编辑:UC知道 时间:2024/05/28 10:04:00
Function fun(x As Integer)
x = x + 1
fun = x
End Function
Private Sub Form_Click()
Dim a As Integer, y As Integer
a = 3
y = fun(a)
Print a
End Sub

Function fun(x As Integer)
x = x + 1
End Function
Private Sub Form_Click()
Dim a As Integer
a = 3
fun(a)
Print a
End Sub
我可不可以这样理解过程?
y = fun(a) fun返回的值赋给Y 所以他可以进行运算

fun(a) 而下面这个只是调用了过程,没有返回值所以不进行运算?我这样理解对吗?

没有
sub没有返回值
function有返回值

比如
sub a(num as integer)
end sub

那么你不能dim s:s = a(123)
而如果
function a(num as integer)
end function
你就可以
dim s:s = a(123)

返回值:
如果sub要返回只能通过变量

sub a(num as integer)
num = num + 1
end sub

其他地方:dim s:s = 0:a(s):msgbox "now s="&s
这里a(s)把s的内存地址传进了sub,然后sub里面对这个num=num+1就相当于s=s+1了。

如果用function则可以写成这样:
function a(num as integer)
num = num + 1
a = num
end function
其中a=num这里a就是过程名
外部使用:
dim s:s = 0:a(s):msgbox "now s=" & s:s = a(s):msgbox "now s=" & s
call a(s):function也具有传内存地址的功能,当然function还有返回值:s = a(s)。
具体返回值类型:
[Private | Public] Function 函数名字 (参数) As 返回值类型

说白了 sub是一个过程 给了它内容不能直接返回一个内容的,只能间接;而function是一个函数,例如数学中函数y=kx,其中输入x那么y就是kx的值,这里也一样,有返回值(如把y=2x写成VB的函数就是:
function y(x as integer) as integer
y = 2x <