【发布时间】:2009-04-05 00:45:24
【问题描述】:
对于我的编程语言课程,我正在尝试用使用名称传递或值结果传递的语言编写一些代码 sn-ps,最好是默认情况下,但任何支持其中任何一种的语言都可以.但是,我还没有找到支持其中任何一种的单一语言。有谁知道使用按值结果传递或按名称传递的语言?最好是命令式语言。
【问题讨论】:
标签: programming-languages parameter-passing
对于我的编程语言课程,我正在尝试用使用名称传递或值结果传递的语言编写一些代码 sn-ps,最好是默认情况下,但任何支持其中任何一种的语言都可以.但是,我还没有找到支持其中任何一种的单一语言。有谁知道使用按值结果传递或按名称传递的语言?最好是命令式语言。
【问题讨论】:
标签: programming-languages parameter-passing
wikipedia article on evaluation strategy 表明 fortran 支持按值调用结果。 algol 68 支持按名称调用。
【讨论】:
我认为 C 宏是按名称传递的(当然,不是 C 语言本身)。恐怕我不知道任何按值结果传递的语言(老实说,我必须进行网络搜索才能找出它的含义!)。
【讨论】:
如果你将一个变量传递给一个fortran函数并在那里修改它,你也在调用程序中修改它:
伪代码:
int j = 1
print j
addOne(j)
print j
会输出:
1
2
【讨论】:
我认为 CLIPS 专家系统语言会按名称传递。
【讨论】:
Java 和 C 都是按值传递的语言。
C 显然是一种按值传递的语言。
Java 总是被告知“基元通过值传递,对象通过引用传递”。但是由于java对象在任何时候都是一个引用,所以它实际上是一个引用值。
Java 语言规范说明了这一点: http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#37472
【讨论】:
Algol 支持 pass-by-name,你可以找到一些解释 here
有人告诉我 Ada 支持按值/结果传递,但还没有尝试过。
【讨论】: