我想知道什麼是編寫下面的代碼的正確方法?在fortran中傳遞指針參數
PROGRAM foo
INTEGER :: x
REAL(KIND=8), TARGET, DIMENSION(0: 10) :: array
REAL(KIND=8), POINTER, DIMENSION(:) :: ptr
ptr => array
CALL bar(ptr)
END PROGRAM foo
SUBROUTINE bar (ptr)
REAL(KIND=8), POINTER, DIMENSION(:) :: ptr
INTEGER x
DO x =0, 10
ptr(x) = 2 // seg faults
ENDDO
END SUBROUTINE bar
它的工作原理,如果我在bar
聲明ptr
爲REAL(KIND=8), DIMENSION(0:10)
。但總的來說,我可能不知道傳入數組的大小,那麼有沒有辦法將ptr
聲明爲某個數組的指針?我正在編譯gfortran
這是一個情況下的'foo'中'bar'需要_explicit interface_。例如,參見http://stackoverflow.com/q/9374691/3157076。 – francescalus 2014-08-31 00:59:57
看來你試圖複製C,最好是在Fortran中思考。仔細閱讀Bálint的回答,雖然伊恩也是對的。 – 2014-08-31 09:15:31