Spec-Zone.ru › GNU Fortran 13

8.22 ASSOCIATED — Статус указателя или пары указатель/цель

Описание:

ASSOCIATED(POINTER [, TARGET]) определяет статус указателя УКАЗАТЕЛЬ или если УКАЗАТЕЛЬ связан с целью ЦЕЛЬ.

Стандарт:

Fortran 90 и более поздние версии

Класс:

Функция запроса

Синтаксис:

RESULT = ASSOCIATED(POINTER [, TARGET])

Аргументы:
УКАЗАТЕЛЬ УКАЗАТЕЛЬ должен иметь атрибут POINTER и может быть любого типа.
ЦЕЛЬ (Необязательно) ЦЕЛЬ должна быть указателем или целью. Она должна иметь тот же тип, вид параметра типа и ранг массива, что и УКАЗАТЕЛЬ.

Статус ассоциации ни УКАЗАТЕЛЬ, ни ЦЕЛЬ не должны быть неопределёнными.

Возвращаемое значение:

ASSOCIATED(POINTER) возвращает скалярное значение типа LOGICAL(4). Есть несколько случаев:

(A) Если необязательный аргумент ЦЕЛЬ отсутствует, то

ASSOCIATED(POINTER) истинно, если УКАЗАТЕЛЬ связан с целью; в противном случае, возвращает ложь.

(B) Если ЦЕЛЬ присутствует и является скалярной целью, результат равен истине, если

ЦЕЛЬ не является нулевым массивом, и цель, связанная с УКАЗАТЕЛЬ, занимает те же ячейки памяти. Если УКАЗАТЕЛЬ не связан, результат ложный.

(C) Если ЦЕЛЬ присутствует и является массивом, результат равен истине, если

ЦЕЛЬ и УКАЗАТЕЛЬ имеют одинаковую форму, не являются нулевыми массивами, являются массивами, элементы которых не являются нулевыми массивами, и ЦЕЛЬ и УКАЗАТЕЛЬ занимают одинаковые ячейки памяти в порядке элементов массива. Как и в случае (B), результат ложный, если УКАЗАТЕЛЬ не связан.

(D) Если ЦЕЛЬ присутствует и является скалярным указателем, результат равен истине

если ЦЕЛЬ связан с УКАЗАТЕЛЬ, цель, связанная с ЦЕЛЬ, не являются нулевыми массивами и занимают одинаковые ячейки памяти. Результат ложный, если ЦЕЛЬ или УКАЗАТЕЛЬ не связаны.

(E) Если ЦЕЛЬ присутствует и является массивом указателей, результат равен истине, если

цель, связанная с УКАЗАТЕЛЬ, и цель, связанная с ЦЕЛЬ, имеют одинаковую форму, не являются нулевыми массивами, являются массивами, элементы которых не являются нулевыми массивами, и ЦЕЛЬ и УКАЗАТЕЛЬ занимают одинаковые ячейки памяти в порядке элементов массива. Результат ложный, если ЦЕЛЬ или УКАЗАТЕЛЬ не связаны.

Пример:
program test_associated
   implicit none
   real, target  :: tgt(2) = (/1., 2./)
   real, pointer :: ptr(:)
   ptr => tgt
   if (associated(ptr)     .eqv. .false.) call abort
   if (associated(ptr,tgt) .eqv. .false.) call abort
end program test_associated
См. также:

NULL — Функция, возвращающая не связанный указатель

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gfortran/ASSOCIATED.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API