Согласие на обработку персональных данных.

01.07.2019
Новый выпуск журнала Автоматизация и программирование.

26.06.2019
Новые видео и статья Функция Eof.

19.06.2019
Новая задача Генератор наборов символов.

08.04.2019
Новый выпуск журнала Автоматизация и программирование.

27.04.2019
Новые видео и статья Процедура Dispose.



Раздел: Как стать программистом / Секреты программирования /

Как передать массив в функцию

Если вы начинающий программист, но уже не совсем новичок, и знаете, что такое подпрограммы, то вы также знаете, что в эти подпрограммы можно передавать параметры.

И, продолжая изучать программирование, вы неизбежно столкнётесь с необходимостью передавать в подпрограммы параметры, которые представляют собой сложные типы данных, такие как массивы.

И очень часто, пытаясь передать массив в процедуру или функцию, новички сталкиваются с очень неприятным для них случаем - они просто не могут это сделать. Потому что вот такая попытка:

function TestFunc(M : array[1..8] of Byte) : boolean;

окажется неудачной - программа не будет создана, а компилятор выдаст ошибку:

Ошибка при передаче массива

В чём же дело?

А дело в том, что передавать массивы в подпрограммы таким образом нельзя!

Как же быть? Не отказываться же от этого? Ведь передавать массивы в подпрограммы приходится довольно часто!

Но как это сделать?

Есть два способа:

Первый способ рассматривать не будем, потому что для новичка он может оказаться малопонятным. Если кому любопытно, то у меня есть книга, посвящённая указателям.

Рассмотрим второй способ. Он очень прост - надо создать пользовательский тип данных, и передавать в функцию уже параметр, имеющий этот тип. И таким образом передать массив в функцию в Паскале, Delphi, Lazarus (да и в большинстве других языков программирования) можно очень даже легко:

program test;

type TMas = array[1..8] of Byte;  //Создаём новый тип

var GM : TMas;                    //Переменная нового типа

//Теперь мы можем передать массив в функцию
function TestFunc(M : TMas) : boolean;
begin
  Result := TRUE;
end;

begin
  TestFunc(GM);
  ReadLn;
end.


Директивы компилятора Директивы компилятора
Как это ни странно, но даже многие опытные программисты не используют директивы компилятора, считая их чем-то ненужным и бесполезным. А между тем, директивы компилятора - это очень классная штука. Если их умело применять в своих программах, то можно существенно сократить время на разработку и уменьшить количество рутинных операций. Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика