如何在module中定义动态数组?
想在module中定义个大小待定的数组,大小从外面读入,试了一些方法,都不能搞定,希望高人帮忙!谢谢~Re:如何在module中定义动态数组?
我用下面代码试了试,好像就是不行module readbnd
contains
subroutine flxx(d,m,n)
implicit none
integer:: i,j,m,n
real,allocatable:: d(:,:)
open(1,file='data.dat')
read(1,*) m,n
allocate(d(m,n))
d=3.0
write(1,*)((d(m,n),j=1,n),i=1,m )
end subroutine flxx
end
错误提示如下:(问题在程序第6行)
D:\fortran workshop\read123\main.f90(6) : Error: A dummy argument name is invalid in this context.
Re:如何在module中定义动态数组?
我用下面代码试了试,好像就是不行module readbnd
contains
subroutine flxx(d,m,n)
implicit none
integer:: i,j,m,n
real,allocatable:: d(:,:)
open(1,file='data.dat')
read(1,*) m,n
allocate(d(m,n))
d=3.0
write(1,*)((d(m,n),j=1,n),i=1,m )
end subroutine flxx
end
错误提示如下:(问题在程序第6行)
D:\fortran workshop\read123\main.f90 : Error: A dummy argument name is invalid in this context.
Re:如何在module中定义动态数组?
我的做法是module readbnd
real,allocatable:: d(:,:)
contains
subroutine flxx
implicit none
integer:: i,j,m,n
open(1,file='data.dat')
read(1,*) m,n
if(.not.allocated(d))allocate(d(m,n))
d=3.0
write(1,*)((d(m,n),j=1,n),i=1,m )
if(allocated(d)) deallocate(d)
end subroutine flxx
end module readbnd
program main
use readbnd
call flxx
end
data.dat
10 10
输出是
10 10 3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
3.000000 3.000000 3.000000 3.000000 3.000000
Re:如何在module中定义动态数组?
谢谢,谢谢freefrompassion ,现在已经搞定,Re:如何在module中定义动态数组?
freefrompassion的方法是可行的,但单在子程中定义也是可能的。subroutine flxx(d,m,n) -〉m,n多余,SIZE函数可测试数组大小。
implicit none
integer:: i,j,m,n
real,allocatable:: d(:,:) -〉改为POINTER变数即可。
open(1,file='data.dat')
read(1,*) m,n
allocate(d(m,n))
d=3.0
write(1,*)((d(m,n),j=1,n),i=1,m )
end subroutine flxx
页:
[1]