Fortran Coder

标题: call的用法 [打印本页]

作者: marlene    时间: 2022-4-10 17:24
标题: call的用法
[Fortran] 纯文本查看 复制代码
      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呢
[Fortran] 纯文本查看 复制代码
call muhard(peeq,hard,yieldOld,props(7),props(8),props(9))



作者: fcode    时间: 2022-4-11 08:34
体会一下函数实参虚参的经典例子:
[Fortran] 纯文本查看 复制代码
subroutine 结婚(  男方,女方 )
end subroutine 结婚

call 结婚(  张三,李四 )
call 结婚(  郭靖,黄蓉 )

所以,在调用者的视角,只有  hard,yieldOld
而在函数内部的视角,只有 hard,yieldNew。而函数内部视角的 yieldNew 就是调用者视角的 yieldOld。

作者: marlene    时间: 2022-4-11 14:27
哦哦,我懂了

作者: marlene    时间: 2022-4-11 14:28
谢谢大佬!


作者: gps99    时间: 2022-4-11 15:30
本帖最后由 gps99 于 2022-4-11 15:35 编辑

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

sub靠表头定义返回多参数应是fortran独有特色,其他语言的函数都是return一个结果(返回数组、字典、元组的算一个,还有函数返回多参数的语言吗? 介绍一下、、) 这个适合数值函数的分析




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2