举个形象的例子,过程(Sub)就是我拍了一下桌子,而函数(Function)就是我拍了一下桌子,结果是手疼。
####定义 Sub:过程
Function:函数 ####语法 Sub:
Sub subName(parameter1,parameter2,...) 函数体End Sub
Function:
Function functionName(parameter1,parameter2,...) 函数体 functionName=result valueEnd Function
####调用方法 Sub:
subName parameter1,parameter2,...
Function:
result=functionName(parameter1,parameter,...)functionName parameter1,parameter2,...
####区别 由此,Function一般是有返回值的,而Sub一定是没有返回值 ####注意 Sub与Function均可有返回值。对于返回方式有两种:过程或函数返回,即分配与过程或函数同名的返回变量地址。Function分配,但Sub不分配。VB用此方式加以区分,VC则用void声明不用分配。
如p=a(),如果a()是sub则什么也得不到,还会报错。但如果是函数则会得到数值。其次,参数返回,VB中缺省用地址传参,即能返回。但声明为ByVal即值传参,则不可返回,所以,不存在灵活性的差别。比如函数function b(a,b), 调用时可以b m, n也可以p=b(m,n).
实际,如果确认不会失败,才能用Sub,否则,必须要用Function以确认是否成功或取得返回值。所以编程,应少用SUB,少用 subName 参数1, 参数2,...的调用方式。