Прямоугольные динамические массивы: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) (Новая: == Ссылки == *Особенности языка: продвинутый уровень *[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalAB...) |
Mikst (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
Здесь иллюстрируется, как работать с прямоугольными динамическими массивами. | |||
<source lang="Delphi">procedure Print(a: array [,] of integer); | |||
begin | |||
for var i := 0 to Length(a,0) - 1 do | |||
begin | |||
for var j := 0 to Length(a,1) - 1 do | |||
write(a[i,j]: 3); | |||
writeln; | |||
end; | |||
end; | |||
var a: array [,] of integer; | |||
begin | |||
a := new integer[5,7]; | |||
for var i:=0 to a.GetLength(0)-1 do | |||
for var j:=0 to a.GetLength(1)-1 do | |||
a[i,j] := Random(100); | |||
Print(a); | |||
writeln; | |||
SetLength(a,6,8); // Перевыделение памяти. Старые данные сохраняются | |||
Print(a); | |||
end.</source> | |||
Отметим, что new выделяет память и заполняет ее нулями, а SetLength может также перевыделять память с сохранением старого содержимого. Отметим также, что для доступа к размеру п i-той размерности используется либо a.GetLength(i), либо Length(a,i). | |||
== Ссылки == | == Ссылки == | ||
*[[Особенности языка: продвинутый уровень]] | *[[Особенности языка: продвинутый уровень]] | ||
*[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка] | *[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка] |
Текущая версия от 15:42, 14 января 2010
Здесь иллюстрируется, как работать с прямоугольными динамическими массивами.
procedure Print(a: array [,] of integer);
begin
for var i := 0 to Length(a,0) - 1 do
begin
for var j := 0 to Length(a,1) - 1 do
write(a[i,j]: 3);
writeln;
end;
end;
var a: array [,] of integer;
begin
a := new integer[5,7];
for var i:=0 to a.GetLength(0)-1 do
for var j:=0 to a.GetLength(1)-1 do
a[i,j] := Random(100);
Print(a);
writeln;
SetLength(a,6,8); // Перевыделение памяти. Старые данные сохраняются
Print(a);
end.
Отметим, что new выделяет память и заполняет ее нулями, а SetLength может также перевыделять память с сохранением старого содержимого. Отметим также, что для доступа к размеру п i-той размерности используется либо a.GetLength(i), либо Length(a,i).