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

Материал из Вики проекта PascalABC.NET
Перейти к: навигация, поиск

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

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.

Ссылки

Персональные инструменты