Курсовая работа: Структури даних для обробки інформації
z^:=<значення> (z – це змінна вказівник, а z^ - динамічна змінна, на яку вказує вказівник z).
Щоб змінити значення змінної-вказівника z (направити її на іншу динамічну змінну) необхідно:
z:=<деякий вказівник нв іншу динамічну змінну>
Оскільки динамічна змінна не має імені (а отже не описується в блоці var), то на початку роботи програми пам’ять під дану змінну не виділяється. А відповідна змінна-вказівник ні нащо не вказує. Коли змінна-вказівник ні нащо не вказує, то говорять, що вона вказує на nil.
Щоб виділити пам’ять, необхідно виконати процедуру new(x), де х – змінна-вказівник.
Після виконання даної процедури (new(x)) вказівник x буде вказувати на комірку пам’яті відповідного типу.
Нехай на якомусь етапі роботи програми вказівник a вказує на деяку динамічну змінну, що містить число 5, а b на іншу змінну, що містить число 10 (мал.1)
Після виконання вказівки 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
new(a);
new(b);
read(a^,b^);
c:=a;
a:=b;
b:=c;
writeln(a^,' ',b^);
end.
Результат роботи програми:
1 2
2 1
В даній програмі використовується лише дві динамічні змінні (дві комірки пам’яті)
Приклад 2 Демонструє перестановку двох динамічних змінних з використанням третьої.
var
a,b,c:^byte;