[英]FORTRAN return array by reference
我很清楚按值傳遞和按引用均值傳遞的是什么,但是相反的方向會發生什么呢?
例如:
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)
子例程是否傳回引用或數組的副本?
我不知道有任何一種編程語言,當通過引用的一個方向傳遞參數時,不會在另一個方向的引用中傳遞相同參數。 當然,在Fortran中,參數似乎是通過引用雙向傳遞的。 我寫這似乎是因為該標准不要求參數必須通過引用傳遞,只是程序的行為就像它們一樣。 通常,有時候,如果傳遞了數組部分,編譯器有時會制作副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.