POINTER (Fortran 90)

用途

POINTER 屬性會將物件指定為指標變數。

術語 指標 是指具有 Fortran 90 POINTER 屬性的物件。 整數 POINTER 陳述式提供舊版 IBM® XL Fortran 中所記載內容的詳細資料,作為 POINTER 陳述式; 這些指標現在稱為 整數指標

語法

讀取語法圖跳過視覺化語法圖POINTER:: ,object_name(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
非同步 伺服器配接卡的 儲存
連續 2 專用 STATIC 3
維度 (dimension) 受保護 1 暫時
附註:
  • 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

相關資訊