Fortran 按引用传递 按值传递作业

标签 fortran parameter-passing

我有一个关于硬件的问题,我弄错了,想知道是否有人可以解释一下。 别担心类(class)结束了只是想知道为什么错了。我问了其他几个同学,他们的答案也和我一样。我也在网上查找,但我发现的所有示例都是交换函数,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 分。

最佳答案

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

按值(value): X=2,Y=2,但随后 X 设置为 1,但这不会改变 Y,因为这是按值计算的。这使得 Z = 3。
中号=3。

关于Fortran 按引用传递 按值传递作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20649231/

相关文章:

ios - 将数据传递给 collectionView(numberOfItemsInSection) 函数 (Swift)

memory-management - forrtl : severe (179): Cannot allocate array - overflow on array size calculation

c++ - 与现代 C++ 相比,现代 Fortran 有哪些优势?

python - 使用 f2py 将 0 长度数组从 fortran 返回到 python

c++ - 在函数中使用数组方法

c - 无法正确访问结构体内容

C 或 fortran 库无法在 R 中加载

c - 什么是 "column independent code"?

jquery - 如何通过向 URL 传递参数来使用 jQuery 刷新页面

javascript - 如何将函数名称作为参数传递,然后再引用该函数?