如何将指针数组指向具有另一个维度的已分配数组?

时间:2016-04-03 09:53:51

标签: arrays pointers fortran

事情如下:

首先,我在内存中分配了一个数组

Real,Allocatable,Target :: Array1D(3)
Array=(/ 3, 7, 0,/)

然后,我想将指针数组指向已分配的数组。

Real,Pointer :: Array3D(:,:,:)
Allocate(Array3D(10,10,10))

例如,我希望(5,5,5)的元素Array3D指向(3)的元素Array1D。有人可能会认为下一个命令会起作用,并会指出我在0中评估的值Array3D(5,5,5)

Array3D(5,5,5)=>Array1D(3)

但它不起作用,因为FORTRAN认为我指向整个阵列并告诉我它不可能因为它们没有相同的大小

顺便说一句,我使用派生类型实现了几乎相同:

Type varArray3D_p
    Real,Pointer     :: value
end Type varArray3D_p
Type(varArray3D_p),allocatable :: Array3D_p(:,:,:)
Allocate(Array3D(10,10,10))

有了这个,我现在可以轻松地指出value

Array3D_p(5,5,5)%value=>Array1D(3)

但是,我需要将我的数据指向一个指针数组,这是第一种方式。我认为Array3DArray3D_d几乎使用相同的空间,但我不知道如何将指针转移到我的目的。

编辑:Array3D_p符合我的目的,因为它将一个巨大的3D数组指向一个只有少量元素的一维数组。但我也希望将其表示为一系列指针,以利用PETSc的优势函数,这些函数需要一系列指针来管理信息。

0 个答案:

没有答案