- 1
- 2
- 3
- 4
- . . .
- последняя »
Травня, 58.
Вміст змінної-вказівника р:
Вул. 1 Травня, 58
Вміст змінної за адресою «Вул. 1 Травня, 58» (ця змінна не має імені):
Квартира Петрова
Змінна, що містить значення Квартира Петрова не є звичайною статичною змінною – вона динамічна.
:^тип динамічної змінної
Наприклад, a:^integer; b:^real;
Щоб змінити значення динамічній змінній, на яку вказує деяка змінна-вказівник z, необхідно виконати команду:
z^:= (z – це змінна вказівник, а z^ - динамічна змінна, на яку вказує вказівник z).
Щоб змінити значення змінної-вказівника z (направити її на іншу динамічну змінну) необхідно:
z:=
Оскільки динамічна змінна не має імені (а отже не описується в блоці var), то на початку роботи програми пам’ять під дану змінну не виділяється. А відповідна змінна-вказівник ні нащо не вказує. Коли змінна-вказівник ні нащо не вказує, то говорять, що вона вказує на nil.
Щоб виділити пам’ять, необхідно виконати процедуру new(x), де х – змінна-вказівник.
Після виконання даної процедури (new(x)) вказівник x буде вказувати на комірку пам’яті відповідного типу.
5
10
a
b
Адреса 2
Мал 1
Адреса 1
10
10
a
b
Адреса 2
Адреса 1
Мал 2
Нехай на якомусь етапі роботи програми вказівник a вказує на деяку динамічну змінну, що містить число 5, а b на іншу змінну, що містить число 10 (мал.1)
5
10
a
b
Адреса 2
Адреса 1
Мал 3
Після виконання вказівки a^:=10 (або a^:=b^) напрям вказівника a не змінюється, змінюється значення динамічної змінної (в нашому випадку зміниться значення змінної за адресою 1: замість 5 там буде міститися 10)Якщо ж замість a^:=b^ записати a:=b, то напрям вказівника a змінюється. Змінна-вказівник a буде вказувати на ту ж змінну, що і вказівник b.(мал 3). Тепер значення динамічної змінної, що знаходиться за адресою 2 можна змінити двома способами: використовуючи вказівник a та вказівник b.
Після виконання вказівок:a:=b;a^:=100;b^:=15;writeln(a^);на екрані буде число 15 (а не 100)
Приклад.1 Демонструє зміну напрямків вказівників на дві незалежні динамічні змінні.
var a,b,c:^byte;
begin
a
c
b
1
2
new(a);
new(b);
read(a^,b^);
c:=a;
a
c
b
2
1
a:=b;
b:=c;
writeln(a^,' ',b^);
end.
Результат роботи програми:
1 2
2 1
В даній програмі використовується лише дві динамічні змінні (дві комірки пам’яті)
Приклад 2 Демонструє перестановку двох динамічних змінних з використанням третьої.
var
a
c
b
1
2
a,b,c:^byte;
begin
new(a);
new(b);
new(с);
read(a^,b^);
a
c
b
2
1
1
c^:=a^;
a^:=b^;
b^:=c^;
writeln(a^,' ',b^);
end.
Результат роботи програми:
1 2
2 1
В даній програмі використовується три динамічні змінні (три комірки пам’яті). Вона працює повністю аналогічно як у випадку із звичайними статичними змінними.
Приклад 1 ефективніший за приклад 2, бо:
По-перше, використовується дві комірки пам’яті;
По-друге, вміст комірок пам’яті не змінюється.
1.2. ЗВ’ЯЗАНИЙ СПИСОК. СТЕКВказівники та динамічні змінні дозволяють створювати складні динамічні структури.
Найпростішою з них є зв’язаний список.
Схематично зв’язаний список можна
- 1
- 2
- 3
- 4
- . . .
- последняя »
Похожие работы
Тема: Методологія обробки статистичних даних |
Предмет/Тип: Финансовый менеджмент, финансовая математика (Контрольная работа) |
Тема: Мікропроцесорна система обробки даних |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Курсовая работа (т)) |
Тема: Методологія обробки статистичних даних |
Предмет/Тип: Менеджмент (Контрольная работа) |
Тема: Алгоритм автоматизованої обробки даних в TURBO PASCAL 7.0 |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Реферат) |
Тема: Прилад прийому та обробки метеорологічних даних |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Диплом) |
Интересная статья: Основы написания курсовой работы