Fortran通过引用传递值作业

时间:2013-12-18 03:35:06

标签: fortran parameter-passing

我有一个问题,我错了,并想知道是否有人可以解释它。 不要担心课程结束只是想知道为什么这是错的。我问了一些其他学生,他们也有同样的答案。我也在线看,但我找到的所有例子都是交换函数,X = 1令我感到困惑。

    SUBROUTINE TEST(X,Y,Z)
    X=1
    Z=X+Y
    RETURN 
    END


    N=2
    CALL TEST ( N,N,M)

   WHAT WILL M BE IF PASSED BY REFERENCE?
   WHAT WILL M BE IF PASSED BY VALUE-RESULT?

第一个问题得到3分,第二个问题得到4分。

1 个答案:

答案 0 :(得分:0)

如果您通过参考, 输入子程序时,X = 2,Y = 2。 然后X被设置为1,这也将Y更改为1,因为它们共享相同的内存位置,对吧?这样会使(X + Y)= 2 ==> Z = 2 M = 2。

按价值: X = 2,Y = 2,但是X得到设置为1,但是这不会改变Y,因为这是值。这使得Z = 3 M = 3.