Fortran中的指针数组操作-下限错误



我想将3D数组指针存储到4D数组指针中,但遇到了一些问题。例如:

real,pointer :: p(:,:,:,:) => null()
integer :: ndims,d
ndims = 3
do d=1,ndims
  p(d,:,:,:) => function
end do

其中function是返回诸如p(:,:,:)之类的指针的函数指针,并且这工作得很好。我得到的错误是Lower bound has to be present在这一行:p(d,:,:,:) => function,但我以前执行过这种操作(不使用指针),它运行良好。我在这里错过了什么?

我认为这源于对

real,pointer :: p(:,:,:,:) => null() 

实际上是在fortran。

它不是指针的4D数组,而是指向4D数组的指针"p"。

你可以做的是玩一个小把戏,创建一个内部有指针的结构:

type pointer4D
   real, pointer :: p
end type pointer4D
type(pointer4D), dimension(:) :: arr

因此,您的代码将变为:

do d=1,ndims
  arr(d)%p => function
end do

假设"函数"是某种3D对象,您可以通过访问维度N的元素I,j,k

arr(N)%p(I,j,k)

最新更新