回 帖 发 新 帖 刷新版面

主题:subroutine的参数为数组时报警

program main
implicit none
integer ::t=5
integer, allocatable::a(:)
allocate(a(t))
call sub(t,a)
end program

subroutine sub(c,aa)
implicit none
integer c,i
integer, allocatable::aa(:)
allocate(aa(c))
do i=1,c
  aa(i)=2*i
end do
write(*,*) aa
end subroutine sub
提示:sub.f90(8) : Warning: In the call to SUB, actual argument #2 does not match the type and kind of 。。。。。。,是可以执行出结果,不知为什么报警了,请大侠们帮帮小弟吧,在此谢过了

回复列表 (共2个回复)

沙发

1. allocatable 数组作为 Dummy Argument, 这是 Fortran 2003 的语法,您的编译器是否支持?
2. 这个需要 Explicit Interface;
3. 您运用这个语法有问题,无需在 caller 中去分配内存。

板凳

program main
  implicit none
  integer:: t=5
  integer, allocatable:: a(:)
 
  call sub(t, a)
  write(*, *) "In caller: --- --- --- "
  write(*, *) a
  deallocate( a )
  
  stop
  
  
contains
  subroutine sub(c,aa)
    implicit none
    integer c,i
    integer, allocatable::aa(:)
    allocate(aa(c))
    do i = 1, c, 1
      aa(i) = 2 * i
    end do   ! i
    write(*, *) "In callee: --- --- --- "
    write(*, *) aa
    return
  end subroutine sub

end program

我来回复

您尚未登录,请登录后再回复。点此登录或注册