0

フィールドが c_ptr (iso_c_binding から) である Fortran 派生型と、その型の 2 つの変数 A と B が与えられた場合、代入 A = B はどのように定義されますか? ポインターが 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?
4

1 に答える 1

2

C_PTR 派生型オブジェクト内に格納された C アドレスは、(トップレベルの) Fortran ポインターのように逆参照されません。右側のオブジェクト内の C アドレスが左側のオブジェクトに割り当てられます。

(これは、Fortran の非ポリモーフィック スカラー ポインター割り当てに似ています。)

概念的には、C_PTR 型には、割り当て不可でポインター以外のコンポーネントのみがあり、それらは組み込み割り当ての規則によって割り当てられているかのようです。

于 2013-03-06T01:59:06.040 に答える