如何在Fortran中分配c_ptr?

时间:2013-03-06 00:41:53

标签: fortran fortran-iso-c-binding fortran2003

给定一个Fortran派生类型,其字段是c_ptr(来自iso_c_binding)和两个所述类型的变量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?

1 个答案:

答案 0 :(得分:2)

存储在C_PTR派生类型对象中的C地址不会被解除引用为(顶级)Fortran指针。右侧对象内的C地址被分配给左侧对象。

(它更类似于Fortran非多态标量指针赋值。)

从概念上讲,就好像C_PTR类型只有非可分配的非指针组件,并且它们是由内在赋值规则分配的。