可变大小数组作为参数传递时,需要用interface
例子:
program test
implicit none
real,allocatable :: array(:)
real :: summ
allocate(array(5))
array=8.
call passarray(array, summ)
write(*,*)summ
end
subroutine passarray(array,summ)
real,intent(in) :: array(:)
real,intent(out) :: summ
write(*,*)array
summ=sum(array)
end subroutine passarray
用ifort编译,运行结果为0.0000000E+00
如果在program 中加interface
则运行结果为
8.000000 8.000000 8.000000 8.000000 8.000000
40.00000