HTML [44] |
Visual C++ и MFC [21] |
c++ [78] |
php [19] |
Javascript [15] |
C# [51] |
загрузки [0] |
XNA
[10]
создание игр с помощью xna
|
Главная » Статьи » c++ |
Имя структуры обладает всеми правами имен типов, а следовательно, можно определять указатели на структуры: имя_структуры *имя_указателя на структуру;Как обычно, указатель можно проинициализировать. Значением указателя на структуру может быть адрес структуры того же типа, т.е. адрес байта, начиная с которого структура размещается в памяти. Структура задает размер объекта и тем самым определяет, на какую величину (на сколько байт) изменится значение указателя на структуру, если к нему прибавить (вычесть) 1. Например, // опеределение структуры Date struct Date { int day; int month; int year; }; void main() { Date my_date, // определение переменной my_date типа Date *birthday; // объявление указателя на объект типа Date // инициализация указателя birthday адресом структуры my_date birthday = &my_date; // ... } В предыдущих разделах для доступа к элементам структуры мы использовали операцию точка (.). Операция точка обращается к элементу структуры по имени переменной объекта. Но, если у нас определен указатель на структуру, то появляется еще одна возможность доступа к элементам структуры. Ее обеспечивает оператор стрелка (->). Формат соответствующего выражения следующий: имя_указателя->имя_элемента_структуры // продолжение примера /* используем операцию точка, чтобы инициализировать элементы структуры my_date */ my_date.year = 2001; my_date.month = 2; my_date.day = 10; /* используем операцию точка, чтобы вывести на экран элементы структуры my_date */ cout << "The date is " << my_date.day << "/" << my_date.month << "/" << my_date.year << endl; /* используем операцию стрелка, чтобы вывести на экран элементы структуры my_date через указатель birthday*/ cout << "My birthday is " << birthday->day << "." << birthday->month << endl; Выражение birthday->month эквивалентно (*birthday).month, которое разыменовывает указатель и делает доступным элемент month через оператор точка. Скобки нужны, т.к. оператор точка имеет более высокий приоритет, чем оператор разыменования указателя (*).
Как и для других объектов, для структур могут быть определены ссылки: имя_структуры &имя_ссылки_на_структуру инициализатор;Например, для переменной my_date можно, так ввести ссылку: Date &now = my_date;После такого определения now является синонимом имени пременной my_date. Для доступа к элементам структуры используется оператор точка. Таким образом, следующие четыре выражения эквивалентны и обеспечивают доступ к элементу month переменной my_date типа Date. my_date.month //по имени переменной now.month // по ссылке birthday->month // через указатель (*birthday).month // через разыменованный указатель | |
Просмотров: 5853 | Рейтинг: 5.0/1 |
Всего комментариев: 0 | |