Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ОписаниС языка PascalABC.NETΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 9

Автор W Cat

type

MyEnum = (w1,w2,w3,w4,w5);

Arr = array [1..10] of integer;

var

a1,a2: Arr;

b: array ['a'..'z',w2..w4] of string;

c: array [1..3] of array [1..4] of real;

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ статичСского массива

ΠŸΡ€ΠΈ описании ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ массива значСниями:

var

a: Arr := (1,2,3,4,5,6,7,8,9,0);

cc: array [1..3,1..4] of real := ((1,2,3,4), (5,6,7,8), (9,0,1,2));

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ статичСского массива

БтатичСскиС массивы ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ, ΠΏΡ€ΠΈ этом Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ содСрТимого ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ:

a1 := a2;

Π’Ρ‹Π²ΠΎΠ΄ статичСского массива

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° write Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ статичСский массив, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ элСмСнты Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ΠΈ раздСляя ΠΈΡ… запятыми:

var a: Arr := (1,2,3,4,5,6,7,8,9,0);

var m := array [1..3,1..3] of integer := ((1,2,3),(4,5,6),(7,8,9));

writeln(a); // [1,2,3,4,5]

writeln(m); // [[1,2,3],[4,5,6],[7,8,9]]

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° статичСского массива Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ статичСского массива Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ‚Π°ΠΊΠΆΠ΅ производится ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ содСрТимого массива - фактичСского ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² массив - Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€:

procedure p(a: Arr); // ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ статичСский массив ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ - ΠΏΠ»ΠΎΡ…ΠΎ!

...

p(a1);

Π­Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π°ΡΡ‚ΠΎΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, поэтому статичСскиС массивы рСкомСндуСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎ ссылкС. Если массив Π½Π΅ мСняСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ Π΅Π³ΠΎ слСдуСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ссылку Π½Π° константу, Ссли мСняСтся - ΠΊΠ°ΠΊ ссылку Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ:

type Arr = array [2..10] of integer;

procedure Squares(var a: Arr);

begin

for var i:= Low(a) to High(a) do

a[i] := Sqr(a[i]);

end;

procedure PrintArray(const a: Arr);

begin

for var i:= Low(a) to High(a) do

Print(a[i])

end;

var a: Arr := (1,3,5,7,9,2,4,6,8);

begin

Squares(a);

PrintArray(a);

end.

Для доступа ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΈ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌ размСрности ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Low ΠΈ High.

ДинамичСскиС массивы

ОписаниС динамичСского массива

Π’ΠΈΠΏ динамичСского массива конструируСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

array of Ρ‚ΠΈΠΏ элСмСнтов (ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив)

array [,] of Ρ‚ΠΈΠΏ элСмСнтов (Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив)

ΠΈ Ρ‚.Π΄.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° динамичСский массив прСдставляСт собой ссылку. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ динамичСский массив нуТдаСтся Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ памяти ΠΏΠΎΠ΄ элСмСнты).

Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ динамичСский массив

Для выдСлСния памяти ΠΏΠΎΠ΄ динамичСский массив ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π²Π° способа. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ new Π² стилС Π²Ρ‹Π·ΠΎΠ²Π° конструктора класса:

var

a: array of integer;

b: array [,] of real;

begin

a := new integer[5];

b := new real[4,3];

end.

Π”Π°Π½Π½Ρ‹ΠΉ способ Ρ…ΠΎΡ€ΠΎΡˆ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ описаниС массива ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Π½Π΅Π³ΠΎ памяти:

var

a: array of integer := new integer[5];

b: array [,] of real := new real[4,3];

ОписаниС Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ этом ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ - Ρ‚ΠΈΠΏ автовыводится:

var

a := new integer[5];

b := new real[4,3];

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ выдСлСния памяти ΠΏΠΎΠ΄ динамичСский массив ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ SetLength:

SetLength(a,10);

SetLength(b,5,3);

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массива ΠΏΡ€ΠΈ этом Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° SetLength ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π΅ΠΌ прСимущСством, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π΅Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ староС содСрТимоС массива сохраняСтся.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ динамичСского массива

МоТно ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ динамичСский массив ΠΏΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ Π½Π΅Π³ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ new:

a := new integer[3](1,2,3);

b := new real[4,3] ((1,2,3),(4,5,6),(7,8,9),(0,1,2));

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ динамичСского массива Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ опСисания ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² сокращСнной Ρ„ΠΎΡ€ΠΌΠ΅:

var

a: array of integer := (1,2,3);

b: array [,] of real := ((1,2,3),(4,5,6),(7,8,9),(0,1,2));

c: array of array of integer := ((1,2,3),(4,5),(6,7,8));

ΠŸΡ€ΠΈ этом происходит Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ справа количСство элСмСнтов.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΏΡ€ΠΎΡ‰Π΅ всСго осущСствляСтся стандартными функциями Seq..., ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ массив ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ значСниями:

var a := Arr(1,3,5,7,8); // array of integer

var s := Arr('Иванов','ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²','Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²'); // array of string

var b := ArrFill(777,5); // b = [777,777,777,777,777]

var r := ArrRandom(10); // Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ 10 случайными Ρ†Π΅Π»Ρ‹ΠΌΠΈ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 99

Π’ Ρ‚Π°ΠΊΠΎΠΌ ΠΆΠ΅ стилС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массивы массивов:

var a := Arr(Arr(1,3,5),Arr(7,8),Arr(5,6)); // array of array of integer

Π”Π»ΠΈΠ½Π° динамичСского массива

ДинамичСский массив ΠΏΠΎΠΌΠ½ΠΈΡ‚ свою Π΄Π»ΠΈΠ½Ρƒ (n-ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ динамичСский массив ΠΏΠΎΠΌΠ½ΠΈΡ‚ Π΄Π»ΠΈΠ½Ρƒ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ размСрности). Π”Π»ΠΈΠ½Π° массива (количСство элСмСнтов Π² Π½Π΅ΠΌ) возвращаСтся стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Length ΠΈΠ»ΠΈ свойством Length:

l := Length(a);

l := a.Length;

Для ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов Π΄Π»ΠΈΠ½Π° ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ размСрности возвращаСтся стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Length с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ GetLength(i):

l := Length(a,0);

l := a.GetLength(0);

Π’Π²ΠΎΠ΄ динамичСского массива

ПослС выдСлСния памяти Π²Π²ΠΎΠ΄ динамичСского массива ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅:

for var i:=0 to a.Length-1 do

read(a[i]);

Π’Π²ΠΎΠ΄ динамичСского массива ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ReadSeqInteger:

var a := ReadSeqInteger(10);

ΠŸΡ€ΠΈ этом ΠΏΠΎΠ΄ динамичСский массив выдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π’Ρ‹Π²ΠΎΠ΄ динамичСского массива

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° write Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ динамичСский массив, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ элСмСнты Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ΠΈ раздСляя ΠΈΡ… запятыми:

var a := Arr(1,3,5,7,9);

writeln(a); // [1,3,5,7,9]

n-ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ динамичСский массив выводится Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ каТдая Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки:.

var m := new integer[3,3] ((1,2,3),(4,5,6),(7,8,9));

writeln(m); // [[1,2,3],[4,5,6],[7,8,9]]

ДинамичСский массив ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Print ΠΈΠ»ΠΈ Println:

a.Println;

ΠŸΡ€ΠΈ этом элСмСнты ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ это ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π·Π°Π΄Π°Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Print, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ элСмСнтов. НапримСр:

a.Print(NewLine);

Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ строкС.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ массивов

Если объявлСн массив массивов

var с: array of array of integer;

Ρ‚ΠΎ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ провСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SetLength:

SetLength(с,5);

for i := 0 to 4 do

SetLength(c[i],3);

Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ new слСдуСт ввСсти имя Ρ‚ΠΈΠΏΠ° для array of integer:

type IntArray = array of integer;

var с: array of IntArray;

...

c := new IntArray[5];

for i := 0 to 4 do

c[i] := new integer[3];

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ массива массивов ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² сокращСнной Ρ„ΠΎΡ€ΠΌΠ΅:

var

c: array of array of integer := ((1,2,3),(4,5),(6,7,8));

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ динамичСских массивов

ДинамичСскиС массивы ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ, ΠΏΡ€ΠΈ этом ΠΎΠ±Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-ссылки Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠ°ΠΌΡΡ‚ΡŒ:

var a1: array of integer;

var a2: array of integer;

a1 := a2;

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для динамичСских массивов принята структурная ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ²: ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ динамичСскиС массивы, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎ структурС.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄Π½ΠΎΠΌΡƒ динамичСскому массиву ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ копию Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ массива, слСдуСт Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Copy:

a1 := Copy(a2);

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° динамичСского массива Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

ДинамичСский массив ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ пСрСдаСтся Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Ρ‚.ΠΊ. сама пСрСмСнная ΡƒΠΆΠ΅ являСтся ссылкой:

procedure Squares(a: array of integer);

begin

for var i:=0 to a.Length-1 do

a[i] := Sqr(a[i]);

end;

begin

var a := Arr(1,3,5,7,9);

Squares(a);

end.

ДинамичСский массив пСрСдаСтся ΠΏΠΎ ссылкС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ случаС: Ссли ΠΎΠ½ создаСтся ΠΈΠ»ΠΈ пСрСсоздаСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ частности, это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ссли для динамичСского масива Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ вызываСтся SetLength:

procedure Add(var a: array of integer; x: integer);

begin

SetLength(a,a.Length+1);

a[a.Length-1] := x;

end;

begin

var a := Arr(1,3,5,7,9);

Add(a,666);

writeln(a);

end.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с динамичСскими массивами

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для динамичСских массивов

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ - это ячСйка памяти, хранящая адрСс. Π’ PascalABC.NET ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ дСлятся Π½Π° Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ (содСрТат адрСс ячСйки памяти Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°) ΠΈ бСстиповыС (содСрТат адрСс ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Π½Π΅ связанный с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°).

Π’ΠΈΠΏ указатСля Π½Π° Ρ‚ΠΈΠΏ T ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ ^T, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

type pinteger = ^integer;