我試圖編寫一個過程,它存儲用戶數組的地址以供進一步處理。問題被封裝在這個測試程序中:不同類型的指針Fortran
program test_ptr
real(4), target, allocatable :: i4(:,:)
real(8), target, allocatable :: i8(:,:)
real(4), pointer :: p(:,:)
allocate(i4(2,2))
allocate(i8(2,2))
p => i4 ! ok
p => i8 ! compile error
end
編譯器建議爲不同的類型製作不同的指針。 但我不想爲真實(4)和真實(8)創建單獨的指針。我試圖製作通用和緊湊的解決方案,併爲不同類型的數據提供一個指針。可能嗎?
謝謝,但我不明白它是如何工作的。如果'p = c_ptr(r4)',那我怎麼能得到它下面的數據(就像C中的'* p')? – vovo
然後使用設置Fortran'指針'的'c_f_pointer()'子例程來指向數據。您必須知道該類型,因爲它不存儲在'c_ptr'中。 –