Покажчикові типи Pointer, ^. Текстовий тип Text
Зміст
- 1. Покажчикові типи. Огляд
- 2. Особливості використання покажчикових типів. Оголошення покажчика типу Pointer та ^
- 3. Покажчик на пусту адресу. Ключове слово nil. Приклад
- 4. Приклад оголошення покажчиків на різні типи та використання покажчикових типів Pointer та ^ для доступу до змінних
- 5. Текстовий тип Text. Робота з текстовими файлами. Приклад
- Споріднені теми
Пошук на інших ресурсах:
1. Покажчикові типи. Огляд
У мові Паскаль покажчикові типи – це типи, які призначені для отримання адреси елементу програми. З допомогою покажчикових типів можна отримати доступ до змінних та констант у програмі. Значеннями змінних та констант покажчикових типів є адреса оперативної пам’яті.
Розрізняють наступні покажчикові типи:
- Pointer – тип, що визначає нетипізований покажчик. Цей дозволяє оголошувати покажчик на змінну чи константу будь-якого іншого типу;
- PAnsiChar, PWideChar, PChar – призначені для роботи з рядками відповідно типів AnsiChar, WideChar, Char
- тип у форматі ^Type, де Type – один з стандартних типів або типів користувача.
⇑
2. Особливості використання покажчикових типів. Оголошення покажчика типу Pointer та ^
Крім наперед визначених ідентифікаторів типів (Pointer) дозволяється оголошувати покажчиковий тип з допомогою символу ^ за наступною загальною формою:
^Type
тут Type – ім’я стандартного типу (Integer, Real, …) або типу, визначеного користувачем.
Щоб отримати адресу змінної використовується конструкція виду
@variable
тут variable – змінна деякого типу.
Відповідно, операція присвоєння покажчику з іменем p адреси змінної variable в загальному випадку виглядає так
p := @variable;
Після того, як покажчику p присвоєна адреса змінної variable, можна отримувати доступ до комірки пам’яті, в якій зберігається змінна variable. Це дає можливість змінювати значення змінної variable з допомогою покажчика p за наступною загальною формою
p^ := value;
тут value – значення, яке присвоється змінній variable з допомогою покажчика p.
⇑
3. Покажчик на пусту адресу. Ключове слово nil. Приклад
Як тільки у програмі оголошено покажчик, в ньому зберігається деяке довільне значення, що означає довільну адресу. У цьому випадку говорять, що покажчик показує на невизначену адресу. Щоб нормалізувати значення покажчика, який ще не використовується, йому присвоюють значення пустої адреси яке визначене з допомогою ключового слова nil.
Операція присвоєння виглядає наступним чином:
ptr := nil;
тут
- ptr – покажчик типу Pointer або виду ^.
Приклад.
var p1 : Pointer; p2 : ^Double; begin ... p1 := nil; // присвоєння покажчику пустої адреси p2 := nil; ... end.
⇑
4. Приклад оголошення покажчиків на різні типи та використання покажчикових типів Pointer та ^ для доступу до змінних
У прикладі демонструються деякі можливості використання покажчикових типів Pointer та ^.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var // Покажчики типів Pointer, ^Type i : Integer; r : Real; c : Char; p : Pointer; // Безтиповий покажчик на деяку змінну pI : ^Integer; // Покажчик на тип Integer pR : ^Real; // Покажчик на тип Real pC : ^Char; // Покажчик на тип Char begin // 1. Покажчик на тип Integer i := 8; p := @i; // Присвоїти покажчику p адресу змінної i pI := p; // Присвоїти покажчику pI значення покажчика p pI^ := 10; // Змінити за покажчиком pI значення змінної i Writeln('i = ', i); // i = 10 // 2. Значення nil p := nil; // значення nil - пуста адреса pI := nil; pC := nil; // 3. Використання покажчика на тип Real pR := @r; // отримати адресу змінної r pR^ := 20.55; // Присвоїти змінній r значення за покажчиком Writeln('r = ', r:2:2); // Вивести значення змінної r // 4. Використання покажчика на тип Char pC := @c; // отримати адресу змінної c, покажчик pC вказує на c c := '+'; // присвоїти змінній c значення Writeln('c = ', pC^); // вивести значення c за покажчиком pC Readln; end.
Результат виконання програми
i = 10 r = 20.55 c = +
⇑
5. Текстовий тип Text. Робота з текстовими файлами. Приклад
Стандартний тип Text використовується для опису текстових файлів. У загальному випадку оголошення змінної типу Text має такий вигляд:
var
variableName : Text;
тут variableName – ім’я змінної типу Text.
Приклад. У прикладі демонструється використання змінних типу Text. Спочатку в заданий файл myfile.txt записується рядок ‘Hello, world!’. Потім цей рядок зчитується і виводиться на екран.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var // Тип Text f1, f2:Text; // оголосити змінні типу Text s:String; // додаткова змінна begin // Тип Text використовується для опису текстових файлів // 1. Запис рядка 'Hello, world!' у текстовий файл 'myfile.txt' // 1.1. Зв'язати змінну f1 з іменем 'myfile.txt' AssignFile(f1, 'myfile.txt'); // 1.2. Відкрити файл для запису Rewrite(f1); // 1.3. Записати у файл f1 рядок 'Hello, world!' Writeln(f1, 'Hello, world!'); // 1.4. Закрити файл, що зв'язаний зі змінною f1 CloseFile(f1); // 2. Зчитати усі рядки з файлу 'myfile.txt' // 2.1. Зв'язати змінну f2 з файлом 'myfile.txt' AssignFile(f2, 'myfile.txt'); // 2.2. Відкрити файл для читання Reset(f2); // 2.3. Зчитати усі рядки з файлу в циклі та вивести їх на екран Writeln('File ''myfile.txt'':'); while not eof(f2) do begin Readln(f2, s); Writeln(s); end; // 2.4. Закрити файл, що був зв'язаний зі змінною f2 CloseFile(f2); Readln; end.
Результат виконання програми
File 'myfile.txt': Hello, world!
⇑
Споріднені теми
- Типи даних. Стандартні типи даних. Цілі типи. Порядкові типи. Функції Ord, Pred, Succ. Функція SizeOf
- Логічні типи. Символьні типи. Рядкові типи
⇑