回 帖 发 新 帖 刷新版面

主题:请大家讨论一下主、子程序间数组传递的问题

如题

回复列表 (共6个回复)

沙发

请参考 The Fortran 2003 Handbook 中 Argument Association 方面的内容。

板凳


你可以先在主程序中定义这个数组,记住,这个定义的数组得定义大小,如果这个数组没有被定义大小,这个数组是不能被子程序调用的,在主程序中定义了之后,子程序就可以来调用这个数组了!
比如:
program main
implicit none
  real x(8)
  ....
  ....
  call sub1(x)
end 

subroutine sub1(x)
implicit none
  real x(8)
  ....
  ....
end

3 楼

在 Fortran 2003 标准中,2 楼提到的 所谓记住的 东东,未必正确了。

4 楼

[quote]在 Fortran 2003 标准中,2 楼提到的 所谓记住的 东东,未必正确了。[/quote]

在fortran90、95中也未必正确吧?

5 楼

子程序中也应当定义数组大小吧,我最近读的一个for77的老程序中,子程序中数组大小总是定义为1,如:
SUBROUTINE STSTN (XX,DISD,PROP)
......
DIMENSION PROP(1),DISD(1)
......
END SUBROUTINE
这是什么原因,请大家给予帮助

6 楼

将数组改放在Module里吧。
它那样定义后,再去掉边界检查就可以随便访问了~~~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册