Программирование и основы алгоритмизации. Макаров В.Л. - 64 стр.

UptoLike

Составители: 

64
10. Указатели
10.1. Назначение указателей
Указатели позволяют применять язык C++ в самом широком диапазоне за-
дачот драйверов устройств на уровне аппаратного обеспечения и управляю-
щих систем реального времени до операционных систем и компиляторов, ани-
мации и мультимедийных приложений. C++это идеальный инструмент для
решения задач в поразительно широком многообразии прикладных областей.
Указательэто особый
тип переменной, содержащей в памяти адрес того
элемента, на который он указывает. При этом имя элемента отсылает к его зна-
чению прямо, а указатель косвенно. Поэтому ссылка на значение посредством
указателей называется косвенной адресацией. Смысл использования указателей
состоит в том, что, отводя место только для запоминания адреса в памяти, Вы
получаете идентификатор (переменную типа указатель), который может ссы-
латься на любой элемент в памяти указанного типа, причем в разный момент
указатель может указывать на разные элементы, т.е. не надо перемещать в па-
мяти с места на место кучи байтов, достаточно просто изменить указатель.
Указатель может указывать на любые объекты:
переменные, массивы, клас-
сы, структуры, и даже на функции. При объявлении указателя необходимо ука-
зать тип элемента, на который он будет указывать. Сам указатель занимает ров-
но столько места, сколько требуется для хранения адреса элемента. Признаком
указателя является символ *, который означает, что следующая за ним перемен-
ная является указателем. Рассмотрим примеры
объявления указателей для раз-
личных типов переменных.
int *r; указатель на целое число,
float*f; указатель на действительное число,
char*ch; указатель на символьную переменную,
long *g[10]; массив из 10 указателей на длинное целое,
long (*t)[10]; указатель на массив из десяти длинных целых,
int(*fun)(double, int ); указатель на функцию с именем fun.
Для инициализации
указателей используется операция присваивания "=".
Присваивание начального значения означает, что при определении указателя
ему следует присвоить либо адрес объекта, либо адрес конкретного места в па-
мяти, либо число 0. Примеры каждого типа инициализации выглядят так:
1. Присваивание указателю адреса существующего объекта:
С помощью операции получения адреса:
int a=5; // целая переменная
int*p = &a; // указателю присваивается адрес
переменной а
int*p (&a); // то же самое другим способом
С помощью значения другого инициализированного указателя:
int*r = p;