我有一個關於我的問題,我錯了,並想知道如果有人能解釋它。 不要擔心課程結束只是想知道爲什麼它是錯的。我問了一些其他的學生,他們也有同樣的答案。我也在線看,但我發現的所有例子都是交換函數,X = 1讓我感到困惑。Fortran通過引用通過值作業
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。
此代碼本身非常接近可運行。您是否嘗試完成該程序並通過傳遞值和傳遞來運行它?默認情況下,所有變量都通過引用傳遞,但可以使用'value'屬性通過值傳遞參數。 –
如果按值傳遞,m永遠不會被定義,所以你可能會得到零或一些垃圾。如果通過引用傳遞,因爲它將在fortran中,代碼實際上是非法的。我猜想x = 1最終將x和y分配給1,而你得到2,但真正的答案是「未定義」。 – agentp
[This recent question](http://stackoverflow.com/q/20650284/2068635)可能會引起您的興趣。 – Stefan