【发布时间】:2010-10-15 11:21:45
【问题描述】:
在 Fortran 中,函数和子程序之间存在明显的区别:函数返回一个值,子程序不返回值。这会在两者之间引入一连串的差异。一个例子是调用语义:你可以像在其他语言中一样调用一个函数,但是为了调用一个子例程,你必须首先发出一个call 语句。
随着在 Fortran95 中添加指针和数据类型,使任何子程序成为函数并保留子例程仅用于遗留似乎没有技术限制。函数可以返回零(您只返回一个虚拟整数)、一个或多个值(例如,您可以返回一个指向已分配类型实例的指针,例如 C++ STL 对)。
我错了吗?由于子程序具有而函数没有的某些特性,我们在 Fortran 编程中还需要子程序吗?
【问题讨论】:
-
不,我们没有;我们也不需要在具有 do while... 的语言中使用 do i=1.. 循环。
-
我认为这个问题在programmers.stackexchange.com上会更好,因为它非常主观。
-
@David:阅读我对非主观问题的非主观回答。
-
除非我大学后的记忆已经消失,否则 Pascal 拥有(或至少拥有)相同类型的函数和子例程。我认为 BASIC 的某些版本也做了/做了。在 C 之前学过这些(和 FORTRAN)后,我发现 C 中只有函数很奇怪!
-
回想一下,fortran IV 和 fortran 77 至少是严格的引用调用语言。除非你想写
p = q + estimate(r,s,t),否则根本不需要“返回”一个值,因为评估的副作用是当务之急。这些语言的直接后代将并且应该继续具有区别因为有后代。如果您不喜欢 fortran 的该功能,请不要使用 fortran。嘘。