Структура - це об'єднання кількох об'єктів, можливо, різного типу під одним ім'ям, яке є типом структури. Як об'єкти можуть виступати змінні, масиви, покажчики та інші структури.
Структури дозволяють трактувати групу пов'язаних між собою об'єктів не як безліч окремих елементів, а як єдине ціле. Структура являє собою складний тип даних, складений з простих типів.
int day; // 4 байта
char * month; // 4 байта
int year; // 4 байта
>;
Поля структури розташовуються в пам'яті в тому порядку, в якому вони оголошені:
У зазначеному прикладі структура date займає в пам'яті 12 байт. Крім того, покажчик * month при ініціалізації буде початком текстового рядка з назвою місяця, розміщеної в пам'яті.
char lastname [20]; // прізвище
char firstname [20]; // ім'я
struct date bd; // дата народження
>;
Ініціалізація полів структури
Ініціалізація полів структури може здійснюватися двома способами:
У першому способі ініціалізація здійснюється за такою формою:
Ім'я елемента структури є складовим. Для звернення до елемента структури потрібно вказати ім'я структури і ім'я самого елемента. Вони розділяються крапкою:
printf ( ".% s.", bd.day, bd.month, bd.year);
Другий спосіб ініціалізації об'єктів мови Сі з використанням функцій вводу-виводу.
#include Використовуючи структури, можна упакувати цілочисельні компоненти ще більш щільно, ніж це було зроблено з використанням масиву. Набір розрядів цілого числа можна розбити на бітові поля, кожне з яких виділяється для певної змінної. При роботі з бітовими полями кількість бітів, що виділяється для зберігання кожного поля відокремлюється від імені двокрапкою тип ім'я: КолічествоБіт При роботі з бітовими полями потрібно уважно стежити за тим, щоб значення змінної не вимагало пам'яті більше, ніж під неї виділено. Приклад Розробити програму, що здійснює упаковку дати в формат #include unsigned short day: 5; unsigned short month: 4; unsigned short year: 7; struct date today; Для організації роботи з масивом можна використовувати покажчик р або ім'я масиву: вираз - покажчик на структуру або об'єднання; Динамічно виділяти пам'ять під масив структур необхідно в тому випадку, якщо заздалегідь невідомий розмір масиву. Для визначення розміру структури в байтах використовується операція sizeof (ім'я структури); Приклад Бібліотека з 3 книг #include #include
#include
struct date
бітові поля
#include
#define YEAR0 1980
struct date
>;
int main ()
Покажчики на структури
вираженіе-> ідентифікатор
(* Вираз) .ідентіфікатор
ідентифікатор - поле структури або об'єднання;Динамічне виділення пам'яті для структур
#include
struct book
Схожі статті