ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 10) онлайн

Глава 10. Указатели

Адреса и указатели

Операция получения адреса &

Указатели и массивы

Указатели и функции

Указатели на строки

Управление памятью: операции new и delete

Указатели на объекты

Связный список

Указатели на указатели

Пример разбора строки

Симулятор: лошадиные скачки

UML-диаграммы

Отладка указателей

Для программистов на C++ указатели являются настоящим кошмаром, кото- рый заставит растеряться кого угодно. Но бояться не стоит. В этой главе мы по- пытаемся прояснить тему указателей и рассмотреть их применение в програм- мировании.

Для чего нужны указатели? Вот наиболее частые примеры их использования:

доступ к элементам массива;

передача аргументов в функцию, от которой требуется изменить эти аргу- менты;

передача в функции массивов и строковых переменных;

выделение памяти;

создание сложных структур, таких, как связный список.

Указатели — это важная возможность языка C++, поскольку многие другие языки программирования, такие, как Visual Basic или Java, вовсе не имеют указа-

телей. (В Java используются ссылки.) Действительно ли указатели являются столь необходимыми? В предыдущих главах мы видели, что многое можно сделать и без них. Некоторые операции, использующие указатели, могут быть выполне- ны и другими путями. Например, доступ к элементу массива мы можем полу- чить и не используя указатели (разницу мы рассмотрим позднее), а функция может изменить аргумент, переданный не только по указателю, но и по ссылке.

Однако в некоторых ситуациях указатели являются необходимым инстру- ментом увеличения эффективности программ на языке C++. Замечательным примером является создание таких структур данных, как связные списки или бинарные деревья. Кроме того, некоторые ключевые возможности языка C++, такие, как виртуальные функции, операция new, указатель this (которые мы об- судим в главе 11 «Виртуальные функции»), требуют использования указателей. Поэтому, хотя мы и можем многое сделать без них, указатели будут нам необхо- димы для более эффективного использования языка программирования.

В этой главе мы познакомимся с указателями, начав с основных концепций и закончив сложными случаями с применением указателей.

Если вы уже знакомы с языком C, то вы можете лишь поверхностно озна- комиться с первой частью главы. Однако вам следует остановиться на разде- лах второй половины главы, посвященных таким вопросам, как операции new и delete, доступ к функциям классов с использованием указателей, массивы указателей на объекты и связные списки.

 

2