主题:请大家讨论一下主、子程序间数组传递的问题
luiware
[专家分:0] 发布于 2010-08-09 10:11:00
如题
回复列表 (共6个回复)
沙发
asymptotic [专家分:16630] 发布于 2010-08-09 12:28:00
请参考 The Fortran 2003 Handbook 中 Argument Association 方面的内容。
板凳
zhangqun0949 [专家分:50] 发布于 2010-08-09 15:21:00
你可以先在主程序中定义这个数组,记住,这个定义的数组得定义大小,如果这个数组没有被定义大小,这个数组是不能被子程序调用的,在主程序中定义了之后,子程序就可以来调用这个数组了!
比如:
program main
implicit none
real x(8)
....
....
call sub1(x)
end
subroutine sub1(x)
implicit none
real x(8)
....
....
end
3 楼
asymptotic [专家分:16630] 发布于 2010-08-09 20:36:00
在 Fortran 2003 标准中,2 楼提到的 所谓记住的 东东,未必正确了。
4 楼
adda [专家分:1520] 发布于 2010-08-09 21:05:00
[quote]在 Fortran 2003 标准中,2 楼提到的 所谓记住的 东东,未必正确了。[/quote]
在fortran90、95中也未必正确吧?
5 楼
luiware [专家分:0] 发布于 2010-08-10 10:26:00
子程序中也应当定义数组大小吧,我最近读的一个for77的老程序中,子程序中数组大小总是定义为1,如:
SUBROUTINE STSTN (XX,DISD,PROP)
......
DIMENSION PROP(1),DISD(1)
......
END SUBROUTINE
这是什么原因,请大家给予帮助
6 楼
cgl_lgs [专家分:21040] 发布于 2010-08-10 13:02:00
将数组改放在Module里吧。
它那样定义后,再去掉边界检查就可以随便访问了~~~~
我来回复