Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Чет про программирование / 17) Передача массивов в качестве агрументов функций

.docx
Скачиваний:
25
Добавлен:
25.04.2015
Размер:
15.83 Кб
Скачать

Передача массивов в качестве агрументов функций в ЯП Паскаль

При создании функции или процедуры работы с массивами в ее объявление нельзя включать описание индексов. Например, объявление

  • procedure MyProc(A: array[1..10] of Integer);

будет расценено как синтаксическая ошибка и вызовет соответствующее сообщение

компилятора. Правильным будет объявление

  • type ta = array[1..10] of Integer;

procedure MyProc(A: ta);

Функции и процедуры в Object Pascal могут воспринимать в качестве параметров не только массивы фиксированного размера, но и так называемые открытые массивы, размер которых неизвестен. В этом случае в объявлении функции или процедуры они описываются как массивы базовых типов без указания их размерности. Например:

  • procedure SumArray(A:array of integer; var B: array of integer);

При таком определении передаваемый в функцию первый массив будет копироваться и с этой копией - массивом A, будет работать процедура. Второй открытый массив определен как var. Этот массив передается по ссылке, т.е. он не копируется и процедура будет работать непосредственно с исходным массивом.

Массив, переданный как открытый, воспринимается в теле процедуры или функции как массив с целыми индексами, начинающимися с 0. Размер массива может быть определен функциями Length - число элементов и High - наибольшее значение индекса. Очевидно, что всегда High = Length - 1.

Массив в качестве возвращаемого значения функции

type

pp = array of integer;

var

arr: pp;

function f1: pp;

var

a: pp;

begin

SetLength(a, 1);

a[0] := 4;

result := a;

end;

Begin

setlength(arr, 1);

arr := f1();

writeln(arr[0]);

readln;

end.