1

我有一个 fortran 指针,指的是一些分配的内存。我想“散列”它,以便获得一个引用该内存的唯一编号。在 C 中,我会将指针位置转换为整数。

4

1 回答 1

6

在 Fortran 95 中,我认为这不可能以严格符合标准的方式实现。您将需要使用供应商扩展 - 必要的功能通常可以通过称为 LOC 或类似的内在函数获得。

在 Fortran 2003 中,根据 Fortran 指针指向的对象的性质,您可以将对象的 C 地址(其内存位置)转换为整数。

USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_LOC, C_INTPTR_T
TYPE(thing), POINTER :: object
INTEGER(C_INTPTR_T) :: an_integer
!****
ALLOCATE(object)
an_integer = TRANSFER(C_LOC(object), an_integer)
于 2012-08-10T10:25:07.997 回答