POINTER (Fortran 90)

用途

POINTER 属性将对象指定为指针变量。

术语 指针 是指具有 Fortran 90 POINTER 属性的对象。 整数 POINTER 语句作为 POINTER 语句提供有关先前版本的 IBM® XL Fortran 中记录的内容的详细信息; 这些指针现在称为 整数指针

语法

读取语法图跳过可视语法图POINTER:: ,对象名(Deferred_shape_spec_list)
deferred_shape_spec
是冒号 (:),其中每个冒号都表示一个维度

规则

object_name 指的是数据对象或函数结果。 如果在作用域限定单元中的其他位置使用 DIMENSION 属性声明 object_name ,那么数组规范必须是 deferred_shape_spec_list

object_name 不得出现在整数 POINTERNAMELISTEQUIVALENCE 语句中。 如果 object_name 是派生类型定义的组件,那么不能在 EQUIVALENCENAMELIST 语句中指定使用该类型声明的任何变量。

指针变量可以出现在公共块和块数据程序单元中。

要确保 Fortran 90 指针特定于线程,请不要为指针指定 SAVESTATIC 属性。 这些属性由用户显式指定,或者通过使用 -qsave 编译器选项隐式指定。 但是,请注意,如果在目标为静态的指针赋值语句中使用非静态指针,那么对指针的所有引用实际上都是对静态共享目标的引用。

具有 POINTER 属性的组件的对象本身可以具有 TARGETINTENTALLOCATABLE 属性,尽管它不能显示在数据传输语句中。

TS 29113 开始您可以为 POINTER属性。 TS 29113 结束

表 1. 与 POINTER 属性兼容的属性
自动 3 INTENT PUBLIC
ASYNCHRONOUS OPTIONAL SAVE
连续 2 PRIVATE 静态 3
DIMENSION 受保护 1 VOLATILE
注意:
  • 1 Fortran 2003
  • 2 Fortran 2008
  • 3 IBM 扩展

这些属性仅适用于指针本身,不适用于任何关联目标,但适用于关联目标的 DIMENSION 属性除外。

示例

Example1:
INTEGER, POINTER :: PTR(:)
INTEGER, TARGET :: TARG(5)
PTR => TARG                  ! PTR is associated with TARG and is
                             !   assigned an array specification of (5)

PTR(1) = 5                   ! TARG(1) has value of 5
PRINT *, FUNC()
CONTAINS
  REAL FUNCTION FUNC()
    POINTER :: FUNC          ! Function result is a pointer

       .
       .
       .
  END FUNCTION
END
Example 2: Fortran 90 指针和线程安全
FUNCTION MYFUNC(ARG)                ! MYPTR is thread-specific.
INTEGER, POINTER :: MYPTR           !  every thread that invokes
                                    !  'MYFUNC' will allocate a
ALLOCATE(MYPTR)                     !  new piece of storage that
MYPTR = ARG                         !  is only accessible within
                                    !  that thread.
ANYVAR = MYPTR
END FUNCTION

相关信息