marlene 发表于 2022-4-10 17:24:55

call的用法

      subroutine muhard(peeq,hard,yieldNew,para1,para2,para3)
C      
      INCLUDE 'VABA_PARAM.INC'
      double precision hard,peeq,yieldNew
C      
      yieldNew=para1-para2*exp(-para3*peeq)
      hard=para2*para3*exp(-para3*peeq)
      return
      end
求问大佬们,我写了一个子程序,我调用后返回得到的是hard和yieldOld吗,还是得到hard和yieldNew呢
call muhard(peeq,hard,yieldOld,props(7),props(8),props(9))

fcode 发表于 2022-4-11 08:34:35

体会一下函数实参虚参的经典例子:
subroutine 结婚(男方,女方 )
end subroutine 结婚

call 结婚(张三,李四 )
call 结婚(郭靖,黄蓉 )
所以,在调用者的视角,只有hard,yieldOld。
而在函数内部的视角,只有 hard,yieldNew。而函数内部视角的 yieldNew 就是调用者视角的 yieldOld。

marlene 发表于 2022-4-11 14:27:59

哦哦,我懂了

marlene 发表于 2022-4-11 14:28:32

谢谢大佬!

gps99 发表于 2022-4-11 15:30:48

本帖最后由 gps99 于 2022-4-11 15:35 编辑

语法问题,自己机器上实验对比一下更快捷,印象也更深刻。体会也会更多。。我感觉比提问效果要好。

sub靠表头定义返回多参数应是fortran独有特色,其他语言的函数都是return一个结果(返回数组、字典、元组的算一个,还有函数返回多参数的语言吗? 介绍一下、、) 这个适合数值函数的分析
页: [1]
查看完整版本: call的用法