回 帖 发 新 帖 刷新版面

主题:[讨论]看一下这段代码为什么能运行?

下面代码形参类型和实参类型不一样

program exam
implicit none
    integer:: N,i
    real(8):: a
    real(8),allocatable:: res(:)  !allocatable 属性
    N = 5
    a = 3.d0
    allocate(res(N))
    call master(N,a,res)
    write(*,*) res
endprogram exam

subroutine master(N,a,re)
implicit none
integer:: N
real(8):: a
real(8):: re(N)    !没有allocatable属性
re = a
endsubroutine master

master子程序的实参res有allocatable属性,而形参re没有allocatable属性,代码可以正常运行,why?

回复列表 (共1个回复)

沙发

刚发完翻了一下书,发现有些猫腻,貌似是allocatable的实参如果有INTENT(INOUT)属性,在返回时参数的所有属性都被形参覆盖了。
对的话就分享一下经验,错的话还请指教

我来回复

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