2013-03-06 73 views
0

給定一個Fortran派生類型,其字段爲c_ptr(來自iso_c_binding)和兩個變量A和B,如何定義賦值A = B?如果指針是fortran指針,那麼在賦值期間它們實際上將被解引用。對於c_ptr也一樣嗎?在Fortran中如何分配c_ptr?

USE, intrinsic :: iso_c_binding 
... 
type all_mine 
    real :: E 
    type(c_ptr) :: ptr_to_some_c 
end type all_mine 
... 
type(all_mine) :: A, B 
... 
A = B ! What happens here? 
+0

如果'pointer_to_some_c'組件是一個Fortran指針組件,那麼當持有組件的派生類型被分配時,它不會被解引用。 – IanH 2013-03-06 02:12:50

回答

2

存儲在C_PTR派生類型對象內部的C地址沒有作爲(頂級)Fortran指針取消引用。右側對象內的C地址分配給左側對象。

(它更類似於Fortran的非多態性標指針賦值。)

概念上,它是彷彿C_PTR類型只有不可分配的,非指針組件以及它們是由內在的規則會分配分配。