2020-12-15

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值