Fortran中subroutine和function的区别
https://www.cnblogs.com/qianjiashi/articles/13667334.html
二者均是被program調用,完成一定的任務,但是二者有明顯的不同:
1. subroutine不需要在program中聲明,但是在調用時必須用Call命令;與此相反,function必須在program中聲明,在調用時不用任何命令,因為函數名本身就是命令;
2. subroutine可以不返回什么結果,但是function必須返回計算結果。
附:
???function聲明格式, real, external :: function_name??!聲明function_name 是個函數,返回結果是real類型。
??在函數定義中也必須指定function_name的數據類型,比如:
???function_name(a1, a2, a3, ....)
???......
???real :: function_name
???.....
???end
3. 使用function有一個“不成文的規定”,就是:“傳遞給函數的參數,只要讀取它的數值就好了,不要去改變它的數據”。雖然在語法上可以改變輸入它的數據,但是輸入函數的參數就是所謂的“自變量”,而函數返回的值是“應變量”。“自變量”是自由變化的,它的值應該不會在使用函數的過程中被改變。如果想要改變輸入的參數時,最好使用子程序,而不是使用函數來完成這個工作。
?
DOUBLE PRECISION FUNCTION D1MACH(I) C C DOUBLE-PRECISION MACHINE CONSTANTS C C D1MACH( 1) = B**(EMIN-1), THE SMALLEST POSITIVE MAGNITUDE. C C D1MACH( 2) = B**EMAX*(1 - B**(-T)), THE LARGEST MAGNITUDE. C C D1MACH( 3) = B**(-T), THE SMALLEST RELATIVE SPACING. C C D1MACH( 4) = B**(1-T), THE LARGEST RELATIVE SPACING. C C D1MACH( 5) = LOG10(B)和
SUBROUTINE FDUMP C***BEGIN PROLOGUE FDUMP C***PURPOSE Symbolic dump (should be locally written). C***LIBRARY SLATEC (XERMSG) C***CATEGORY R3 C***TYPE ALL (FDUMP-A) C***KEYWORDS ERROR, XERMSG C***AUTHOR Jones, R. E., (SNLA) C***DESCRIPTION?
總結
以上是生活随笔為你收集整理的Fortran中subroutine和function的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 驻波检测及双向耦合器参数说明
- 下一篇: hadoop开发环境配置