Динамические массивы: особенности

Материал из Вики проекта PascalABC.NET
Версия от 14:20, 12 января 2010; Mikst (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Данный пример иллюстрирует особенности работы с динамическими массивами.

procedure Print(a: array of integer);
begin
  foreach v: integer in a do
    Write(v, ' ');
  Writeln;
end;    

var a: array of integer;

begin
  a := new integer[10];

  for var i:=0 to a.Length-1 do
    a[i] := PABCSystem.Random(100);

  Print(a);

  SetLength(a,12); // Перевыделение памяти. Старые данные сохраняются
  Print(a);
  
  System.Array.Sort(a);
  Print(a);

  System.Array.Reverse(a);
  Print(a);
end.

Следует обратить внимание, что для получения длины массива используется a.Length. Кроме этого, память под массив может быть выделена не только процедурой SetLength, но и операцией new.

Наконец, параметр подпрограммы a: array of integer представляет собой именно динамический массив, а не открытый массив, как в Delphi.

Ссылки