2

我想使用一个数组 Ar(-3:3, 5),它是模块 global 中的一个可分配变量,并在一个子例程中分配它并在下一个子例程中访问它(参见下面的代码片段)。第二个子程序中的索引是从 -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
4

1 回答 1

2

如果您将可分配数组作为可分配对象访问,则可分配数组始终保留其边界。这意味着甚至直接使用“使用关联”或“主机关联”,如您在 subroutine 中所示useAR,或者如果您将它们作为可分配的虚拟参数传递。如果您将它们作为假定形状或假定大小的数组传递,则必须在每个调用过程中指定下限,否则它将默认为 1。

所以在你的情况下,你可以使用-3,1.

否则,我同意 Jonathan Dursi 关于全局可变状态的观点。

于 2013-04-29T13:18:29.793 回答