Типы данных. Знакомствоу с простейшими видами пользовательских типов данных. Объединение разнотипных данных под одним именем, страница 4

*                *                   *

┌─────────────────────────────┐        t0000126

│  Обращение к члену объекта  │

│      через имя объекта      │

└─────────────────────────────┘

Доступ к членам объекта через имя объекта выполняется с использованием оператора '.' (точка). Для подобного доступа после имени предварительно объявленного объекта ставится точка и пишется имя члена, к которому производится обращение:

┌─────────────────────────────────┐

│  Имя_объекта.Имя_члена_объекта  │

└─────────────────────────────────┘

Далее с этой комбинацией можно работать как с обычной переменной.

┌──────────────────────────────────────────────┐

│  Например,

│  Определена структура:       struct ddd    {  

│                                                                             int a, b;

│                                                                             long c; 

│                                                                  };             ├──────────────────────────────────────────────┤

│  В коде объявлены структурные переменные - объекты:               │

│                                 .    .    .               

│               ddd zz, kk, tt;                      

│                                 .    .    .        

├──────────────────────────────────────────────┤

│  Работа с внутренними переменными объектов:        

│             zz.a = 2;  zz.b = 3;  zz.c = zz.a * zz.b;     

│             kk.a = kk.b = kk.c = 1;                         

│             tt.a = kk.b + (zz.a + kk.c) * zz.c;               

└──────────────────────────────────────────────┘

Пример работы с переменными объекта "через точку" показан в ИлК S\s08.cpp.

*            *           *

┌────────────────────────┐                    t0000127

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

│        структур        │

└────────────────────────┘

В С++ создание указателей на объекты структур выполняется точно так же, как и создание указателей на обычные переменные.

Для создания указателя на объект перед именем переменной указателя помещается '*'. В общем виде это выглядит следующим образом:

┌──────────────────────────┐

│  Ярлык * Имя_указателя;  │

└──────────────────────────┘

, где Ярлык         - имя-идентификатор структуры;

Имя_указателя - идентификатор переменной-указателя.

Для задания адреса объекта следует выполнить операцию присвоения, разместив перед именем объекта знак амперсанда '&':

┌──────────────────────────────────┐

│  Имя_указателя = & Имя_объекта;  │

└──────────────────────────────────┘

Пример взятия адреса объекта показан в ИлК S\S09.cpp.

Доступ к членам структуры производится при помощи оператора стрелка ( -> ).

Этот оператор формируется из знака "минус" и символа "больше".

Общий вид обращения к члену объекта:

┌──────────────────────────────┐

│  Имя_указателя -> Имя_члена  │

└──────────────────────────────┘

Далее с данной конструкцией можно работать, как с обычной переменной.

Пример обращения к членам объекта с использованием указателей показан в ИлК S\S10.cpp.

Поражающая воображение универсальность С++ позволяет выполнять обращение к членам объекта в одном коде и через точку, и через указатель.

Пример смешанного обращения к членам объекта показан в ИлК S\S11.cpp.

struct ddd {       int a;

long c, d, e;

char lira;

};

//----------------------------------int main()

{

ddd kk;

ddd *pk;              

pk = &kk;

pk->a = kk.c = pk->d = kk.e = 1;

pk->lira = '!';

*                *                *

┌────────────────────────┐                   t0000128

│  Массивы в структурах  │

└────────────────────────┘

Члены в структурах могут быть не только простыми переменными, но и представлять собой массивы однородных элементов. Мы пока рассмотривали только одномерные массивы, но принцип формирования массивов сохранится.

Для того, чтобы встроить в структуру массив элементов, достаточно объявить член структуры в виде массива следующим образом:

┌────────────────────────────────┐

│  struct Ярлык {              

│                . . .          

│            Тип Имя_члена[N]; 

│           char Имя_строки[M];

│                . . .         

│               };             

└────────────────────────────────┘