Spec-Zone.ru › GNU Fortran 5

9.20 ASSOCIATED — Статус указателя или пары указатель/целевой объект

Описание:
ASSOCIATED(POINTER [, TARGET]) определяет статус указателя POINTER или если POINTER связан с целевым объектом TARGET.
Стандарт:
Fortran 95 и более поздние версии
Класс:
Функция запроса
Синтаксис:
RESULT = ASSOCIATED(POINTER [, TARGET])
Аргументы:
POINTER POINTER должен иметь атрибут POINTER и может быть любого типа.
TARGET (Необязательно) TARGET должен быть указателем или целевым объектом. Он должен иметь тот же тип, тип параметра kind и ранг массива, что и POINTER.
Статус связывания ни POINTER, ни TARGET не должен быть неопределённым.
Возвращаемое значение:
ASSOCIATED(POINTER) возвращает скалярное значение типа LOGICAL(4). Существует несколько случаев:
(A) Если необязательный TARGET отсутствует, то
ASSOCIATED(POINTER) истинно, если POINTER связан с целевым объектом; в противном случае возвращает ложь.
(B) Если TARGET присутствует и является скалярным целевым объектом, результат истинен, если
TARGET не является нулевым массивом и целевой объект, связанный с POINTER, занимает те же единицы хранения. Если POINTER не связан, результат ложен.
(C) Если TARGET присутствует и является массивом, результат истинен, если
TARGET и POINTER имеют одинаковую форму, не являются нулевыми массивами, являются массивами, элементы которых не являются нулевыми последовательностями хранения, и TARGET и POINTER занимают одни и те же единицы хранения в порядке элементов массива. Как и в случае (B), результат ложен, если POINTER не связан.
(D) Если TARGET присутствует и является скалярным указателем, результат истинен
если TARGET связан с POINTER, целевой объект, связанный с TARGET, не является нулевым массивом и занимает те же единицы хранения. Результат ложен, если либо TARGET, либо POINTER не связаны.
(E) Если TARGET присутствует и является массивом указателей, результат истинен, если
целевой объект, связанный с POINTER, и целевой объект, связанный с TARGET, имеют одинаковую форму, не являются нулевыми массивами, являются массивами, элементы которых не являются нулевыми последовательностями хранения, и TARGET и POINTER занимают одни и те же единицы хранения в порядке элементов массива. Результат ложен, если либо TARGET, либо POINTER не связаны.
Пример:
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-5.4.0/gfortran/ASSOCIATED.html

Spec-Zone.ru

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