Fortran:模块中的可分配变量

时间:2013-04-29 12:39:53

标签: memory-management module fortran

我想使用数组Ar(-3:3,5),它是模块全局中的可分配变量,并将其分配到一个子例程中,并在下一个子例程中访问它(请参阅下面的代码片段)。第二个子程序中的索引是从-3到3还是从1到5,还是我必须在子程序中指定?

module global
   real, allocatable(:,:) :: Ar
end module global

subroutine allocateAr
   use global

   ALLOCATE(Ar(-3:3, 5))
end subroutine allocateAr

subroutine useAr
   use global

   Ar(-3,1)=3.0  !is this -3,1 here or do I have to use 1,1????
end subroutine useAr

1 个答案:

答案 0 :(得分:2)

如果您将它们作为可分配对象访问,则可分配数组始终保留其边界。这意味着甚至可以直接使用'use association'或'host association',就像在子例程useAR中显示的那样,或者将它们作为可分配的伪参数传递。如果将它们作为假定的形状或假定的大小数组传递,则必须在每个被调用的过程中指定下限,否则它将默认为1.

因此,在您的情况下,您可以使用-3,1

否则我同意Jonathan Dursi对全球可变状态的看法。