Читайте также: |
|
У Delphi додана цікава можливість опису масивів без вказівки розмірності і, відповідно, меж зміни індексів:
Var
IntArray: Array Of integer;
Такі масиви є дінамічними і спочатку мають нульову довжину. Установка розміру масиву і визначення його під час виконання програми проводиться так само як і для рядків, за допомогою функцій Setlength і Length, відповідно. Елементи в даному випадку нумеруються від нуля.
Program UsingDynamicArrays1;
Var
А, В: Array of Integer;
{Опис двох змінних - динамічних масивів цілочисельних елементів}
Begin
Setlength(A, 5); {Установка розміру масиву А (5 елементів)}
А[0]:= 1; {Присвоєння значення 1 елементу масиву А з номером 0)
End.
Змінні-динамічні масиви є покажчиками і операції з ними проводяться як з покажчиками. Наприклад, при присвоєнні одного масиву іншому елементи одного масиву не копіюються в другій, а копіюється адреса масиву. Відповідно, порівняння двох масивів в логічних виразах типу «рівне - не рівно» проводиться порівнянням адрес. Приклад присвоєння одного масиву іншому приведений в лістингу 3.
Лістинг 3. Приклад присвоєння одного масиву іншому
Program Usingdynamicarrays2;
Var
А, В: Array of Integer;
{Опис двох змінних - динамічних масивів цілочисельних елементів}
Begin
Setlength(A, 5);{ Установка розміру масиву А (5 елементів)}
А[0]:= 14; { Присвоєння значення 14 нульовому елементу масиву А}
B:= А; { Присвоєння масиву В масиву А, тепер змінні А і В указують на один і той же масив}
B[0]:= 2; { Присвоєння нульовому елементу масиву В значення 2, тепер нульовий елемент масиву А також має значення 2}
End.
Відзначимо істотну відмінність в роботі з рядками і динамічними масивами, що мають однакове внутрішнє уявлення на основі покажчиків, але різні методи роботи. Два різні рядки, що складаються з однакового набору символів, вважаються рівними, а два разних масиви, що містять однакові елементи, не рівні. Приведемо приклад:
Var
S1, S2: Ansistring;
{ Опис двох рядквих змінних типу Ansistring}
А1, А2: Array Of Integer;
{ Опис двох змінних – динамічних масивів цілочисельних елементів}
Begin
S1:= ‘abcdef’;
S2:= ‘abcdef’; {Тепер змінні S1 і S2 рівні}
Setlength(A1, 2); {Установка розміру массиву A1}
Setlength(А2, 2); {Установка розміру масиву А2 рівного розміру масиву А1}
А1[0]:= 0;
А1[1]:= 1;
А2[0]:= 0;
А2[1]:= 1; {Заповнення масивів А1 і А2 однаковими елементами. Тепер масиви мають однакові довжини і складаються з однакових елементів, проте не рівні між собою, оскільки знаходяться в різних місцях пам'яті}
А2:= А1; {Присвоєння посилання на масив А1 у змінну A2. Тепер масиви А1 і А2 рівні, оскільки змінні А1 і А2 указують на одне і те ж місце в пам'яті}
Дата добавления: 2015-07-11; просмотров: 129 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Типізовані покажчики | | | Визначення типу варіантних змінних |