Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторн_робот_Ч2.doc
Скачиваний:
19
Добавлен:
03.11.2018
Размер:
2.12 Mб
Скачать
  1. Теоретичні відомості

Структура – це іменована сукупність даних різних типів.

Існують способи завдання структурного типу

1-й спосіб

struct ім'я_структурного_типу { визначення елементів };

struct – службове слово (ключове) чи специфікатор структурного типу;

ім'я_структурного_типу – грає ту ж роль, що і специфікатори типів int, double, float ( вибирається довільно програмістом);

визначення елементів – сукупність одного чи більш описів об'єктів структури.

2-й спосіб

Ввести структурний тип можна за допомогою typedef, що дозволяє увести власне позначення для будь-якого визначення типу.

Формат визначення структурного типу:

typedef struct {визначення елементів}позначення структурного типу ;

3-й спосіб

Ввести структурний тип можна за допомогою директиви #define.

Формат визначення структурного типу

#define позначення структурного типу struct \

{ визначення елементів структури}

Визначення структури в програмі

1-й спосіб

Формат визначення конкретних структур має вид:

1) struct ім'я_структурного_типу список_імен_структур;

2) struct ім'я_структурного_типу {визначення елементів} список структур;

2-й спосіб

Якщо структурний тип був визначений через typedef, то структури можуть уводиться за допомогою імені структури (avto).

3-й спосіб

Після визначення структури в #define визначити структури можна за допомогою препроцесорного ідентифікатора

4-спосіб

Можна визначити структури, без імені структурного типу, тобто так називаний «безіменний» структурний тип. Такий тип, звичайно, використовується в програмі для однократного визначення структур:

struct {визначення елементів} список структур;

Виділення пам'яті для структур

При кожному визначенні структури їй виділяється пам'ять у такій кількості, щоб могли розміститися дані всіх елементів.

Реальний розмір пам'яті в байтах, що виділяється для структури, можна визначити за допомогою операції

sizeof (ім'я структури)

sizeof (ім'я структурного типу)

Елементи структури в пам'яті розміщаються підряд:

Наприклад, struct str

{char pole1;

Int pole2 ;

float pole3

};

Ініціалізація і присвоювання структур:

Ініціалізація структур схожа на ініціалізацію масивів.

1-й спосіб

Безпосередня ініціалізація при визначенні структури. Наприклад,

struct student stud1={“Іванов”, “ФАКСУ“, 1}

struct st2={'Х', 12, 97.34};

2-й спосіб

Стандарт Сі дозволяє присвоювання структур ( у відмінності від такої можливості для масивів). Наприклад,

struct student {char FIO[10];char fak[6]; int kurs;} stud1,stud2;

syud1=stud2; - якщо визначена stud1.

Доступ до елементів структури

1-й спосіб

Доступ до елементів структур забезпечується за допомогою уточнених імен:

Формат організації доступу:

ім'я структури . ім'я елемента

Наприклад,

stud1.FIO – перемінна-масив типу char[10];

stud1.fak - перемінна-масив типу char[6];

stud1.kurs – перемінна типу int;

Операція (.) називається операцією доступу до елемента структури і має самий високий ранг поряд з дужками () й операцією  (операція доступу до елементів структури через її покажчик, що адресує,)

Уточнене ім'я структури володіє усіма правами даних (об'єктів) відповідних типів. Їх можна використовувати у виразах, їх значення можна вводити з клавіатури і т.д.

2-й спосіб

Покажчик на структуру, налаштований на конкретну структуру того ж типу, забезпечує доступ до її елементів двома способами:

  1. (*покажчик на структуру) . ім'я елемента

  2. покажчик на структуру ім'я елемента

Перший спосіб доступу традиційний, і заснований на операції розіменування покажчика, що його адресує. Наприклад,

Якщо struct Book { char title[10]; char author[10]; float cost; };

struct Book b1, b2, *b;

тоді доступ до елементів структур b1 і b2 забезпечується за допомогою :

(*b).title чи b( title

(*b).cost чи b( cost

Другий спосіб доступу до елементів структури за допомогою «налаштованого» на неї покажчика передбачає застосування спеціальної операції  , що має найвищий ранг, і називається операцією непрямого вибору компонента структурованого об'єкта, що адресується покажчиком.