Доступ к элементам структуры

Элементы структуры могут иметь модификаторы доступа: public, private и protected. По умолчанию все элементы структуры объявляются как общедоступные (public). Забегая вперед, следует сказать, что все члены класса по умолчанию объявляются как защищенные (private).

Для обращения к отдельным элементам структуры используются операторы: . и ->.

Доступ к элементам структуры может иметь следующее формальное описание:

переменная_структурного_типа.элемент_структуры=значение;

имя_структурного_типа *указатель_структуры=&переменная_структурного_типа;

указатель_структуры->элемент_структуры=значение;

 

Например:

struct structA {

char c1;

char s1[4];

float f1;} aS1,

// aS1 - переменная структурного типа

*prtaS1=&aS1;

// prtaS1 - указатель на структуру aS1

struct structB {

struct structA aS2;

// Вложенная структура

} bS1,*prtbS1=&bS1;

aS1.c1= 'Е';

// Доступ к элементу c1 структуры aS1

prtaS1->c1= 'Е';

// Доступ к элементу c1 через

// указатель prtaS1

(*prtaS1).c1= 'Е';

// Доступ к элементу c1

(prtbS1->aS2).c1='Е';

// Доступ к элементу вложенной структуры

Доступ к элементу массива структурного типа имеет следующий формальный синтаксис:

 

имя_массива[индекс_элемента_массива].элемент_структуры

 

При использовании указателей на массив структур следует сначала присвоить указателю адрес первого элемента массива, а затем реализовывать доступ к элементам массива, изменяя этот указатель адреса.

 

Например:

struct structA {

int i; char c;} sA[4], *psA;

psA=&sA[0];

cout<<psA->i;

// Доступ к первому элементу массива

// структур

// Переход ко второму элементу массива

psA++;

// Эквивалентно записи: psA=&sA[1];

cout<<psA->i;