标题:sub 和 function 究竟有什么不同?
只看楼主
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
结帖率:96%
已结贴  问题点数:20 回复次数:4 
sub 和 function 究竟有什么不同?
都说sub没有返回值,function有返回值

sub也可以有返回值,二者没有区别。
搜索更多相关主题的帖子: function 
2014-11-18 13:27
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
得分:0 
Sub没有返回值的,你怎么说有?举个例说明。
2014-11-18 14:56
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
得分:0 
你不见函数是这样定义的:Function Add(ByVal A As Long, ByVal B As Long) as long,而过程是这样定义的:Sub Add(ByVal A As Long, ByVal B As Long)。
前者后面多了个“as long",而后者没有。这就是说前者定义了返回值的类型,而后者不返回值,所以没有类型。
当然如果不需要返回值,两者就没什么区别。总的来说函数比过程功能更强大。



[ 本帖最后由 zhengang1026 于 2014-11-18 15:08 编辑 ]
2014-11-18 15:03
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1817
专家分:3681
注 册:2011-3-24
得分:10 
许久以前,有前辈告知两者之间的差异,除了基本上返回值的差异外,据说还有程序启动后,系统载入内存时动作不同,个人是抱持存疑的态度,
也许板上先进可以协助释疑。

据说Sub和Function的差异是在于,一个是执行到时才会被读到内存中运行,一个是程序启动时就先再入到内存中等待被运行,所以Function
使用越多越占内存空间,但是速度快,而使用Sub则占内存空间较少,但是运行速度较慢,所以编程时要视程序设计需求,适时的分别使用Sub和
Function,以达程序运行时的最大效益。事实上我不确定是否是这样,只是印象中有人说过。

不要選我當版主
2014-11-21 02:22
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:10 
回复 4 楼 wube
sub和function没有本质上的区别,sub就是void function。
你所说的要调入内存中执行的是动态链接库,就是平常所说的dll,程序没用到时,一般不会到内存中,需要时就会调入,调入后不释放内存。你所说的要占用内存的是“宏”,其实在编程时,有很多代码有共性,但又存在差异,写代码的可以提取共性,命名为一个“宏”,这样编译器编译时就会每遇到一个宏重复编译代码,执行sub和function时一定是执行机器代码call XXXXXXXXXX指令,会进行push 当前地址的入栈操作,sub和function执行完后一定会执行机器代码ret n的指令,会进行pop当前地址的操作,因此使用宏的话可以减少程序员的代码量,但宏不会进行入栈出栈操作,运行速度相对快些。
2014-11-21 07:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-438798-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.171031 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved