很明显,我通过什么值传递并通过引用传递平均值,但是相反方向会发生什么?
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)
子程序是否传回了引用或数组的副本?
答案 0 :(得分:3)
我不知道任何编程语言,当通过引用在一个方向上传递参数时,在另一个方向上不通过引用传递相同的参数。当然,在Fortran中,参数似乎是在两个方向上通过引用传递的。我写似乎是因为标准不要求通过引用传递参数,只是程序的行为就像它们一样。通常情况下,有时编译器会复制,也许是在传递数组部分时。