fortran中subroutine与function的区别
Function 有返回值,subroutine 不一定有几个返回值 function能做到的subroutine 一定能做到,定义两个不同的subroutine但是传入的参数不同时,可以放到interface中进行重定义,modure procedure ex1 module procedure ex2 除了重载subroutine需要在interface中声明之外,subroutine不需要再声明,但是function却要放在interface中进行声明
另外可以参考一年博客https://blog.csdn.net/u013943420/article/details/53388880
module MA
implicit none
interface getx
module procedure getx1
module procedure getx2
end interface
contains
subroutine getx1(a,b)
real a,b
write(*,"('x=',F5.2)") -b/a
return
end subroutine
subroutine getx2(a,b,c)
real a,b,c
real a2, d, sqrt_d
a2=2*a
d=b*b-4*a*c
if ( d>=0 ) then
sqrt_d = sqrt(d)
write(*,"('x=',F5.2,',',F5.2)") (-b+sqrt_d)/a2, (-b-sqrt_d)/a2
else
write(*,*) "无实数解"
end if
end subroutine
end module
program main
use MA
implicit none
call getx(1.0,2.0) ! 实际会调用getx1
call getx(1.0,3.0,2.0) ! 实际会调用getx2
end program