Информатика и технология программирования

         

Указатели на элементы структуры


Если структура имеет несколько элементов одного типа, то для нее может быть создан "внутренний" указатель, который принимает значение внутреннего адреса (смещения) элемента относительно выбранной структуры. Формирование и использование такого указателя ясно из примера:


struct dat
{
int day,month,year;
void Getdat();
void Putdat();
void Nextdat();
};
void main() {
int dat::*p; // Указатель на элемент типа int в структуре dat


p = &#38dat::month; // Значение p - смещение (адрес) элемента month


// в структуре типа dat


dat x,*px = &#38x;
x.*p = 5; // Обращение по внутреннему


px-&#62*p = 5; // указателю эквивалентно


// x.month = 5;


} // px-&#62month =5;

Аналогичный внутренний указатель может быть создан для функций-элементов, принадлежащих одной структуре, при этом функции должны быть идентичными по результатам и параметрам:


void (dat::*fun)(); // Указатель на функцию- элемент структуры dat


fun = &#38 dat::Putdat(); // Значение fun - указатель на элемент-функцию


// Putdat в dat


(x.*fun)(); // Вызовы функции-элемента по


(px-&#62*fun)(); // указателю fun эквивалентны


// x.Putdat(); px-&#62Putdat();



Содержание раздела