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
- См. также:
© 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