POINTER (Fortran 90)
用途
POINTER 屬性會將物件指定為指標變數。
術語 指標 是指具有 Fortran 90 POINTER 屬性的物件。 整數 POINTER 陳述式提供舊版 IBM® XL Fortran 中所記載內容的詳細資料,作為 POINTER 陳述式; 這些指標現在稱為 整數指標。
語法
規則
object_name 是指資料物件或函數結果。 如果使用 DIMENSION 屬性在範圍設定單元的其他位置宣告 object_name ,則陣列規格必須是 deferred_shape_spec_list。
object_name 不得出現在整數 POINTER、 NAMELIST或 EQUIVALENCE 陳述式中。 如果 object_name 是衍生類型定義的元件,則無法在 EQUIVALENCE 或 NAMELIST 陳述式中指定任何以該類型宣告的變數。
指標變數可以出現在共用區塊及區塊資料程式單元中。
若要確保 Fortran 90 指標是執行緒專用的,請不要指定指標的 SAVE 或 STATIC 屬性。 這些屬性由使用者明確指定,或透過使用 -qsave 編譯器選項隱含地指定。 不過請注意,如果在目標為靜態的指標指派陳述式中使用非靜態指標,則該指標的所有參照實際上都是靜態共用目標的參照。
具有具有 POINTER 屬性之元件的物件本身可以具有 TARGET、 INTENT或 ALLOCATABLE 屬性,雖然它無法出現在資料傳送陳述式中。
您可以為假設等級實體指定 POINTER 屬性。
自動 3 | INTENT | PUBLIC |
非同步 | 伺服器配接卡的 | 儲存 |
連續 2 | 專用 | STATIC 3 |
維度 (dimension) | 受保護 1 | 暫時 |
附註:
|
這些屬性僅適用於指標本身,不適用於任何相關聯的目標,但適用於相關聯目標的 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