GWinston 发表于 2004-4-12 13:11:32

【求助】在FORTRAN中如何动态分配多个数组

想动态分配 L 个大小不等的一维数组, 其中第 i 个数组的元素个数为 N(i),
   i=1,2,...,L
  L 和 N(i) (i=1,2,...,L)只有在程序运行时才知道。

请问有没有办法可以动态分配这些数组?

多谢指点!!!

SCIE 发表于 2004-4-12 14:02:46

回复: 【求助】在FORTRAN中如何动态分配多个数组

我试了好久也不行,或许找个变通的方法,就柳暗花明了。
把L个一维数组连起来,分配一个一维数组,在用的时候找到相应的位置就可以了 。
!假定 L 和 N(L) 已经存在
integer::total
real,allocatable:: p(:)
integer,allocatable::ind(:)
allocate(ind(L))
total = 0
do i = 1,L
    ind(i) = total;
    total = total + N(i);
enddo
allocate(p(total))

!取第 i 个数组的第 j 个值
p(ind(i)+j)
“各个数组”其实是一个数组,使用的时候注意不要越界。

或许谁还有更好的方法,我这就当是扔了一块砖头。

GWinston 发表于 2004-4-12 14:15:33

回复: 【求助】在FORTRAN中如何动态分配多个数组

多谢指点!!不管用什么手段,能解决问题的就是好方法!

看来我还真是死板啊

另: allocate(index(size(N))) 是什么意思?
我想应该是 allocate(index(L)) 吧?

SCIE 发表于 2004-4-12 14:18:51

回复: 【求助】在FORTRAN中如何动态分配多个数组

index是Fortran里的函数名称,已经更改为ind,它是“各个数组”的起始位置的索引。
size(N)是数组N的长度,也就是L吧?用L更好。已改为allocate(ind(L)).

GWinston 发表于 2004-4-12 14:46:47

回复: 【求助】在FORTRAN中如何动态分配多个数组

明白了。感谢...................

对 SCIE 表示敬仰!!!

luogj18 发表于 2011-8-4 20:12:20

谢谢楼主分享
页: [1]
查看完整版本: 【求助】在FORTRAN中如何动态分配多个数组