簡體   English   中英

FORTRAN通過引用返回數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM