Глава 7. Указатели и ссылки__________________________________759
будет некое 32-разрядное число. Что же касается взаимоотношений адресов и указателей, то если вы напишете
-i.nt *pnut •= nut;
то будет создан указатель, указывающий на ячейку памяти с адресом 5 (рискованное дело). Если на самом деле вы хотели создать для переменной псевдоним, то вам следует написать
int *ctonut = &nut;
Чтобы изменить значение nut через donut, donut следует просто разымено-вать и присвоить новое значение:
*donut = 0;
У псевдонимов есть круг типичных приложений, некоторые из которых исключительно полезны. Одно из них, в частности, играет немаловажную роль в конструкции самой системы Windows 95. Речь идет об указателях на функции или функторах (functors). Функторы активно при1жняются в ряде областей, одна из которых — это создание функций обратного вызова (callback functions), таких как обработчики прерываний (interrupt handlers) и обработчики событий (event handlers). Функторы рассматриваются в главе 12 "Библиотечные функции Borland C++".
Доступ к динамическим объектам
Операция выбора элемента через указатель (->) используется для доступа к элементам динамических составных объектов. Составные (aggregate) объекты — это переменные производных типов, сконструированных из других типов, как то классы или структуры; термин динамические обозначает, что они размещены в куче, скорее всего, с помощью операции new; элемент — это некая переменная, входящая в состав такой комплексной переменной.
С помощью ключевого слово struct задаются определения данных структуры. Структуры больше всего похожи на записи, в которых каждое поле представляет собой пару тип данных — имя переменной. Через имя структуры можно ссылаться сразу на все входящие в ее состав данные, а к каждому конкретному элементу можно обращаться, используя имя структуры в качестве префикса. Например,
Struct INTS
( int thingOne, thingTwo; };
В ЭТОМ Примере Элементы — ЭТО thingOne И thingTwo.
Если переменная этого типа, или объект, определена как переменная-ука-затель,
struct INTS *ints = new INTS;