Pointer types Pointer and ^. Text type
Contents
- 1. Pointer types. Overview
- 2. Features of using pointer types. Declaring a pointer of type Pointer and ^
- 3. Pointer to a blank address. The nil keyword. Example
- 4. An example of declaring pointers to various types and using the pointer types Pointer and ^ to access variables
- 5. Text type. Working with text files. Example
- Related topics
Search other resources:
1. Pointer types. Overview
In Pascal, pointer types are types that are designed to get the address of a program element. Pointer types allow you to access variables and constants in your program. The values of variables and constants of pointer types are the memory address.
The following pointer types are distinguished:
- Pointer is a type that defines an untyped pointer. This allows you to declare a pointer to a variable or constant of any other type;
- PANsiChar, PWideChar, PChar – designed to work with strings of the AnsiChar, WideChar, Char types, respectively;
- type in the format ^Type, where Type is one of the standard types or user types.
⇑
2. Features of using pointer types. Declaring a pointer of type Pointer and ^
In addition to the predefined type identifiers (Pointer), it is allowed to declare a pointer type using the ^ character in the following general form:
^Type
here Type is the name of a standard type (Integer, Real, …) or a user-defined type.
To get the address of a variable, use a construction like
@variable
here variable is a variable of some type.
Accordingly, the operation of assignment to a pointer named p of the address of variable in the general case looks like this
p := @variable;
Once p has been assigned the address of variable, you can access the memory location where variable is stored. This makes it possible to change the value of variable using the pointer p in the following general form
p^ := value;
here value is the value that is assigned to variable using the p pointer.
⇑
3. Pointer to a blank address. The nil keyword. Example
As soon as a pointer is declared in the program, some arbitrary value is stored in it, which means an arbitrary address. In this case, the pointer is said to point to an undefined address. To normalize the value of a pointer not yet in use, it is assigned the value of an empty address, which is defined using the nil keyword.
The assignment operation looks like this:
ptr := nil;
here
- ptr – pointer of Pointer type or ^.
Example.
var p1 : Pointer; p2 : ^Double; begin ... p1 := nil; // assigning a pointer to an empty address p2 := nil; end.
⇑
4. An example of declaring pointers to various types and using the pointer types Pointer and ^ to access variables
The example demonstrates some of the possibilities of using the pointer types Pointer and ^.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var // Pointer types: Pointer, ^Type i : Integer; r : Real; c : Char; p : Pointer; // A typeless pointer to a variable pI : ^Integer; // Pointer to Integer type pR : ^Real; // Pointer to Real type pC : ^Char; // Pointer to Char type begin // 1. Pointer to Integer type i := 8; p := @i; // Assign pointer p to the address of variable i pI := p; // Set pointer pI to the value of pointer p pI^ := 10; // Change the value of the variable i by the pointer pI Writeln('i = ', i); // i = 10 // 2. Value nil p := nil; // the nil value is an empty address pI := nil; pC := nil; // 3. Using the pointer to a Real type pR := @r; // get the address of the variable r pR^ := 20.55; // Assign value by pointer to variable r Writeln('r = ', r:2:2); // Print the value of the variable r // 4. Using a pointer to a Char type pC := @c; // get the address of the variable c, the pC pointer points to c c := '+'; // assign a value to the variable c Writeln('c = ', pC^); // output the value of c by pointer pC Readln; end.
Program result
i = 10 r = 20.55 c = +
⇑
5. Text type. Working with text files. Example
The standard type Text is used to describe text files. In general, a variable declaration of type Text looks like this:
var
variableName : Text;
here variableName is the name of a variable of type Text.
Example.
Our example demonstrates the use of variables of type Text. First, the string ‘Hello, world!’ Is written to the specified file myfile.txt. This string is then read and displayed.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var // Тип Text f1, f2:Text; // declare variables of type Text s:String; // additional variable begin // The Text type is used to describe text files // 1. Writing the string 'Hello, world!' to the text file 'myfile.txt' // 1.1. Bind variable f1 named 'myfile.txt' AssignFile(f1, 'myfile.txt'); // 1.2. Open file for writing Rewrite(f1); // 1.3. Write the string 'Hello, world!' to file f1 Writeln(f1, 'Hello, world!'); // 1.4. Close the file associated with the f1 variable CloseFile(f1); // 2. Read all lines from file 'myfile.txt' // 2.1. Associate variable f2 with file 'myfile.txt' AssignFile(f2, 'myfile.txt'); // 2.2. Open file for writing Reset(f2); // 2.3. Read all lines from a file in a loop and print them to the screen Writeln('File ''myfile.txt'':'); while not eof(f2) do begin Readln(f2, s); Writeln(s); end; // 2.4. Close the file that was associated with the f2 variable CloseFile(f2); Readln; end.
Program result
File 'myfile.txt': Hello, world!
⇑
Related topics
- Standard data types. Integer types. Ordinal types. Functions Ord, Pred, Succ. Function SizeOf
- Boolean types. Character types. String types
⇑