为了账号安全,请及时绑定邮箱和手机立即绑定

请问Sub子过程与Function函数过程有什么区别?

/ 猿问

请问Sub子过程与Function函数过程有什么区别?

侃侃无极 2019-07-09 10:07:10

Sub子过程与Function函数过程有什么区别?


查看完整描述

4 回答

?
叮当猫咪

function是函数,sub是子程序,都可以传递参数,但函数有返回值,子程序没有
function 可以用自身名字返回一个值,sub 需定义别的变量,用传址方式传回值。
Sub 过程与Function 过程的区别:
1. Sub 过程定义时无需定义返回值类型,而Function 过程一般需要用“As 数据类型” 定义函数返回值类型。
2. Sub 过程中没有对过程名赋值的语句,而Function 过程中一定有对函数名赋值的语句。
3. 调用过程:调用 Sub 过程与 Function 过程不同。调用 Sub 过程的是一个独立的语句,而调用函数过程只是表达式的一部分。Sub 过程还有一点与函数不一样,它不会用名字返回一个值。但是,与 Function过程一样,Sub 过程也可以修改传递给它们的任何变量的值。
4. 调用 Sub 过程有两种方法:
以下两个语句都调用了名为 MyProc 的 Sub 过程。
Call MyProc (FirstArgument, SecondArgument)
MyProc FirstArgument, SecondArgument
注意当使用 Call 语法时,参数必须在括号内。若省略 Call 关键字,则也必须省略参数两边的括号。

区别就是:子过程没有返回值,函数过程有返回值。
子过程用于编写一些代码的集合,函数过程用于建立函数。我兴个例吧。
例如,我要做多处要做如下事件,我只要编写一个子过程,在其它事件下,我只要把子过程的名称写下就行了。
Private Sub ABC(A As Integer, B As Integer, C As Integer)
A = 1
B = 1
C = 1
End Sub

Private Sub Command1_Click()
ABC '按扭一就调用了该子过程了,而不用再写子过程的代码。
End Sub

Private Sub Command2_Click()
ABC '按扭二就调用了该子过程了,而不用再写子过程的代码。
End Sub

Private Sub Command3_Click()
ABC '按扭三就调用了该子过程了,而不用再写子过程的代码。
End Sub

函数例子:
如我要多处运用C=A+B这个算法,我可以编写这个函数:
Private Function C (A As Integer, B As Integer) As Integer
C = A + B
End Function

Private Sub Command1_Click()
Text1.Text = C(5, 3) '这里就运用了函数C来计算5+3了。
End Sub

Private Sub Command2_Click()
Text1.Text = C(4, 2) '这里就运用了函数C来计算4+2了。
End Sub

查看完整回答
反对 回复 2019-07-14
?
慕圣8478803

没有
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
end function

查看完整回答
反对 回复 2019-07-14
?
隔江千里

Function称为函数
Sub称为过程

函数可以有返回值,把处理结果直接赋值给函数本身
比如楼主问题里:fun=x,就是把结果直接赋值给函数!这就是函数的返回值!
函数在使用时,不能单独使用(极个别除外)!
比如,print fun(a),前面添加了输出语句!或者y=fun(a),将函数返回值赋值给变量y!所以函数返回值就如同变量一样!
当然如果你写一个没有返回值的函数,那它其实就跟sub一样,是个过程!

过程没有返回值,只能对数据进行处理,需要另外通过变量来传递处理后的数据!
而且过程可以单独使用!

查看完整回答
反对 回复 2019-07-14
?
蛊毒传说

1)首先纠正一下你的说法:
sub是过程
function是函数
2)区别在于:
sub没有返回值
function有返回值
3)用法:
sub a(xx)
endsb
调用方法:
a 5

call a(5)

function a(xx) as integer
end function
调用方法:
a 5

x=a(5)

查看完整回答
反对 回复 2019-07-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信