next up previous contents
След.: Указатели в процедурах Выше: Процедуры Пред.: Объявление и определение процедур   Содержание


Автоматические и перенимающие массивы

В теле процедуры могут определяться массивы, и массивы могут быть аргументами процедуры. В частности, эти массивы могут быть заданной конфигурации. Однако есть средства для определения размера или конфигурации массива внутри процедуры: автоматические массивы, массивы, перенимающие размер и массивы, перенимающие конфигурацию.

Автоматические массивы объявляются в процедуре как обычно, но граница хотя бы одного измерения задается неконстантным выражением. Это выражение может содержать другие параметры, размеры аргументов-массивов (встроенная функция SIZE) и т.п. В результате массив заранее неизвестного размера скрыт в процедуре. Такие массивы не могут инициализироваться при объявлении и не могут иметь атрибут SAVE.

У массивов, перенимающих размер, верхняя граница последнего измерения указано звездочкой *. Размер определяется по размеру фактического аргумента. Рекомендуется пользоваться массивами, перенимающими конфигурацию.

Массивы, перенимающие конфигурацию -- это массивные аргументы, при объявлении которых опущены верхние границы. Они определяются по конфигурации фактического аргумента. Опущенная нижняя граница равна 1. Например,

REAL, DIMENSION:: A(:,2:)

При использовании таких массивов процедура должна иметь явный интерфейс.

Существует поддерживаемая для совместимости возможность передачи элемента массива в качестве фактического аргумента процедуры, если формальный аргумент -- массив. При этом передается массив элементов, начиная с данного, в порядке следования элементов в массиве. Пользоваться этим методом не рекомендуется.



Ilya A. Chernov 2012-12-19
X