函数和子程序有什么区别?

pho*_*xis 38 terminology

函数和子程序有什么区别?有人告诉我,函数和子程序之间的区别如下:

函数接受参数,在本地工作,不会改变任何值或使用其范围之外的任何值(高内聚).它还返回一些值.子程序直接与调用它的调用者或代码段的值一起工作,并且不返回值(低内聚),即将一些代码分支到其他代码以便进行一些处理并返回.

这是真的?或者没有区别,只有两个术语来表示一个?

Jas*_*ary 11

我不同意.如果通过引用传递参数到函数,则可以在函数范围之外修改该值.此外,函数不具有返回值.void some_func()在C中考虑因此OP中的前提是无效的.

在我看来,函数子例程之间的区别是语义.也就是说,某些语言使用不同的术语.

  • 然而,在纯粹的数学意义上,函数接受参数并返回一个值.显然,我们可以编写一个函数,过程,方法,无论那些都没有(即void function()).但是在某些语言(VB)中,您不能拥有不返回值的Function,但它不能有任何参数.子例程不能返回值,可能有也可能没有参数.面向对象的实践使这更复杂化.但最常见的成员函数称为方法,这个词没有数学关系(虽然可能是科学的,但定义不同). (6认同)
  • @NerdFury,我鼓励您将此作为您自己的答案发布。根据您的评论,您似乎提供了替代定义。虽然我仍然认为这两个术语之间的区别归结为特定的语言约定,但我同意你所说的。 (3认同)

And*_*eas 8

函数返回值,而子例程则不返回.函数不应该更改实际参数的值,而子例程可以更改它们.

多数民众赞成我对他们的定义;-)

  • 来自维基百科:'...这种上下文中的void类型与定义Visual Basic中的子例程和Pascal中的过程的语法结构相似. (4认同)
  • 解释`void function()`然后呢? (3认同)
  • `void`函数不返回值.你的定义是*函数返回值*.弱酱. (2认同)

小智 8

如果我们用C,C++,Java和其他相关的高级语言进行交流:

一个.子例程是用于编写算法(或流程图)以在一个地方指定处理功能的逻辑构造.子程序根据输入提供一些输出,其中处理可以保持不变.

湾 函数是编程语言中子例程概念的实现