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))
体会一下函数实参虚参的经典例子:
subroutine 结婚(男方,女方 )
end subroutine 结婚
call 结婚(张三,李四 )
call 结婚(郭靖,黄蓉 )
所以,在调用者的视角,只有hard,yieldOld。
而在函数内部的视角,只有 hard,yieldNew。而函数内部视角的 yieldNew 就是调用者视角的 yieldOld。
哦哦,我懂了
谢谢大佬!
本帖最后由 gps99 于 2022-4-11 15:35 编辑
语法问题,自己机器上实验对比一下更快捷,印象也更深刻。体会也会更多。。我感觉比提问效果要好。
sub靠表头定义返回多参数应是fortran独有特色,其他语言的函数都是return一个结果(返回数组、字典、元组的算一个,还有函数返回多参数的语言吗? 介绍一下、、) 这个适合数值函数的分析
页:
[1]