Составители:
Рубрика:
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;
Страницы
- « первая
- ‹ предыдущая
- …
- 62
- 63
- 64
- 65
- 66
- …
- следующая ›
- последняя »