pointers - 如何使 Fortran c_ptr 为空?

标签 pointers null fortran fortran-iso-c-binding

我有一个有两个指针的类型,一个 Fortran 指针和一个 C 指针:

type mytype
  procedure(whatever), pointer, nopass :: fortranPointer
  type(c_ptr) :: cPointer
end type 

我可以为两个指针分配一些东西,例如:

type(mytype) :: instance
instance%fortranPointer => fPtrToSomething
instance%cPointer = c_loc(somethingElse)

当我想初始化指针而不分配某些东西时,我可以对 Fortran 指针使用 null()nullify:

instance%fortranPointer => null()

但是如何将 c_ptr 初始化为 null? instance%cPointer = null() 不起作用,因为 null() 不允许出现在赋值的右侧。 c_loc(null()) 是不允许的,因为null() 不是一个变量,可以获取哪个位置。

有没有类似c_null的东西?

最佳答案

发现有一个名为常量c_null_ptr内在类型 可以使用。

关于pointers - 如何使 Fortran c_ptr 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28148494/

相关文章:

pointers - Go 的接口(interface)在什么意义上可以被视为指针?

fortran - 对称矩阵的快速索引

Fortran 按引用传递 按值传递作业

python - 尝试安装 scipy 时出现 Fortran 错误

python - 结构定义中带有指针的枚举

c - 指针之间的区别

vba - MS Access : eval() returns NULL when accessing . 列(x,y)属性

php - 为什么null可以写成反斜杠?

java - 为什么我的 Spring @Autowired 字段为空?

c++ - 指针与引用