Передача массивов в качестве параметров
Стандартный прием Паскаля состоит в описании массива как типа данных и указании этого типа для параметра подпрограммы. Однако таким способом удается обрабатывать только динамические массивы и статические массивы заранее заданной длины. Часто требуется, чтобы подпрограмма не ограничивалась конкретными размерами массива. Например, функция, вычисляющая сумму всех элементов массива, должна уметь получать в качестве параметра массив любой длины. Динамические массивы использовать не всегда удобно и не всегда правильно, так как они ухудшают эффективность работы программы.
В Паскале разрешается указывать в качестве параметров массив с неопределенными границами.
procedureSum( A: array of Byte );
Теперь массив, описанный как varAr: array [1..25] ofByte; можно без проблем передавать в процедуру Sum: Sum(Ar);
При этом внутри тела подпрограммы действуют следующие правила:
>> Нумерация элементов массива начинается с нуля (число элементов можно определить с помощью стандартной функции SizeOf);
>> Функция High возвращает верхнюю границу массива (равную Size0f()-1);
>> Копирование массива одним оператором присваивания не разрешается;
>> Вместо массива в подпрограмму может быть передана обычная переменная соответствующего типа. Внутри подпрограммы она будет представлена в виде массива из одного элемента (с индексом 0).
Дата добавления: 2014-12-01; просмотров: 1004;