Указательные типы 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
- Логические типы. Символьные типы. Строчные типы
⇑