数组作函数参数,必须在函数体内制定数组大小。之前的老fortran可以用*号代替下标,但是只能应用在数组最后一维。如果有一个矩阵行数列数事先都不知道,这种方法就不行了。fortran95引入module之后,要实现动态数组做函数参数就简单多了。样例代码如下:
module mytest
contains
subroutine test(ps)
integer,dimension(:,:)::Ps;
integer ::p;
p=size(ps);
write(*,*)p;
write(*,*) ps(1,1),ps(1,2),ps(2,1),ps(2,2)
end subroutine
end module
program farray
!real(kind(le0)):: s;
use mytest
!integer,allocatable,dimension(:)::s;
!allocate(s(10));
integer ,dimension(2,2)::arr;
arr(1,1) = 1.5
arr(1,2) = 2.5
arr(2,1) = 3.5
arr(2,2) = 4.5
write(*,*) arr(1,1),arr(1,2),arr(2,1),arr(2,2)
call test(arr);
end program farray