我有一个关于硬件的问题,我弄错了,想知道是否有人可以解释一下。 别担心类(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/