Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Указатель на структурную переменнуюСодержание книги
Поиск на нашем сайте
Описание шаблона структуры по существу новый тип, поэтому можно использовать указатель на введенный тип. Как и все указатели на данные, указатель на структурную переменную занимает либо два (near), либо четыре (far) байта. Для доступа к полям структурной переменной через указатель используется операция ->. Выражение указатель_на_структуру->имя_поля эквивалентно обычной записи (*указатель_на_структуру).имя_поля Приведем пример описания указателя на структурную переменную, инициализации указателя и его использования для ссылки на отдельные поля структурной переменной: /* Prim8_2.cpp*/ struct UDC{char class, subclass; int number;}; struct BOOK{ struct UDC udc_class; char name[20]; char title[44]; int year; float price; }; struct BOOK *ptr_book, first_book; ptr_book = &first_book; ptr_book->year = 1992; ptr_book->udc_class.class = ‘A’; ptr_book->udc_class.number = 681; strcpy(ptr_book->title, "Белый Бим Черное Ухо"); scanf("%f", &ptr_book->price); Ссылка на поле структурной переменной через указатель обладает всеми свойствами обычной переменной. Например, если поле – это массив символов, то ptr_book->title – это указатель-константа на первый элемент массива. Можно определить адрес первого байта поля структурной переменной обычной операцией взятия адреса. Например, &ptr_book->price – это адрес первого байта поля price. Естественно, что ссылка на поле структурной переменной через указатель может располагаться как слева, так и справа от знака операции присваивания. Например, если описан шаблон BOOK и сделано описание данных: struct BOOK *ptr_book, first_book; ptr_book = &first_book; то ссылка (*ptr).year эквивалентна ссылке first_book.year и ссылке ptr_book->year. Заслуживает внимания то, как осуществляется доступ к полям вложенной структуры. Например, для того, чтобы сослаться на поле class вложенной переменной по шаблону struct UDC, сначала используют операцию ->, а затем ссылку на поле вложенной структуры операцией ‘.’: ptr_book->udc_class.class = ‘A’; Используя указатель на структурную переменную, можно сделать ссылку на поле любого типа, в том числе, например, на указатель. Отметим, что указатель на структуру может использоваться до объявления шаблона структуры, так как компилятору не требуется информация о размере структуры, а размер самого указателя известен. Далее приведен пример доступа к полям структуры с использованием указателя на структуру UDC, являющегося полем структуры BOOK: /* Prim8_3.cpp */ struct BOOK{ struct UDC *udc_class; // указатель char name[20]; char title[44]; int year; float price; }; struct UDC{ char class, subclass; int number; } my_class; struct BOOK *ptr_book, first_book; ptr_book = &first_book; ptr_book->udc_class = &my_class; ptr_book->udc_class->class = ‘A’; ptr_book->year = 1992; ptr_book->udc_class->number = 681; strcpy(ptr_book->title, "Белый Бим Черное Ухо"); scanf("%f", & ptr_book->price); В приведенном примере структурная переменная first_book, созданная по шаблону struct BOOK, включает в себя поле udc_class. Оно представляет собой указатель на структурную переменную по шаблону struct UDC. Сам шаблон struct UDC описан после описания указателя udc_class. Операция присваивания ptr_book->udc_class = &my_class; записывает в поле udc_class адрес первого байта структурной переменной my_class. После этого можно ссылаться на поля переменной udc_class через указатель ptr_book, например, так: ptr_book->udc_class->class = ‘A’; Указатели на структурные переменные широко используются для доступа к структурам, размещаемым в диамически выделяемой памяти, при создании вложенных структур данных – списков, стеков, деревьев и пр., для передачи в качестве фактических аргументов функциям.
|
||||
Последнее изменение этой страницы: 2017-02-05; просмотров: 315; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.23.101.241 (0.009 с.) |