【发布时间】:2012-08-17 01:20:59
【问题描述】:
我正在尝试在 Fortran 中创建一个数组数组。
类似下面的东西
TYPE :: array_of_arrays
REAL, DIMENSION(:), POINTER :: p => NULL()
END TYPE
TYPE(array_of_arrays), DIMENSION(2) :: some_array
这样我就可以做到:
REAL, DIMENSION(3), TARGET :: some_vector1 = (/1.0, 2.1, 4.3/)
REAL, DIMENSION(3), TARGET :: some_vector2 = (/3.0, 1.2, 9.6/)
some_array(1)%p => some_vector1
some_array(2)%p => some_vector2
WRITE(*,*) some_array(1)%p ! I see some_vector1
WRITE(*,*) some_array(2)%p ! I see some_vector2
现在将这些some_vector 数组中的每一个声明为对应于我的数组数组中的每个元素对我来说很麻烦。
我想做的是在一个单独的子例程中设置一个临时向量作为目标,并且该子例程设置我的数组数组以指向该临时向量。
这样我就可以拥有匿名数组了。
但是,这似乎不起作用,我首先想知道我是否正在做一些 Fortran 不支持的事情。
那么 Fortran 是否支持匿名数组,即(以防我的术语有误)只能通过引用访问的数组?
【问题讨论】:
-
我不关注。疯狂地猜测,您的单独子例程可以分配指针组件,以便它们指向“临时”存储。您需要考虑该临时存储的生命周期。也许显示“似乎不起作用”的代码。
标签: pointers fortran anonymous-types anonymous