FORTRAN通过引用返回数组

时间:2014-07-05 21:36:52

标签: fortran

很明显,我通过什么值传递并通过引用传递平均值,但是相反方向会发生什么?

e.g:

subroutine get_flux(flux,ngrid,u,a,c)
implicit none
    double precision, dimension(1:ngrid), intent(in) :: u
    double precision, intent(in) :: a,c
    integer, intent(in) :: ngrid
    double precision, intent(out) :: flux
    flux = a*u*(1-u)**c 
end subroutine

如果我通过

调用此子程序
double precision, dimension(1:ngrid) :: flux
double precision, parameter :: a = 1, c = 5
double precision, dimension(1:ngrid) :: u(:) = 2
call get_flux(flux,ngrid,u,a,c)       

子程序是否传回了引用或数组的副本?

1 个答案:

答案 0 :(得分:3)

我不知道任何编程语言,当通过引用在一个方向上传递参数时,在另一个方向上不通过引用传递相同的参数。当然,在Fortran中,参数似乎是在两个方向上通过引用传递的。我写似乎是因为标准不要求通过引用传递参数,只是程序的行为就像它们一样。通常情况下,有时编译器会复制,也许是在传递数组部分时。