Структури в С/С++
Завантажити презентаціюПрезентація по слайдам:
Структури в С/С++ Структура в мові С(С++) – це тип даних, який складається з визначеної кількості елементів, що називаються членами структури (інколи – полями структури). Члени структури можуть мати різні типи. Синтаксис визначення структури: struct tag_name { mem_1; //перший член структури mem_2; //другий член структури ... mem_n;//останній член структури }; // крапка з комою обов’язкова Визначення екземпляру структури: struct tag_name id_example; // стиль С tag_name id_example; // стиль С++ Доступ до членів структури – через крапкову нотацію.
Зауваження 1. При визначенні структури тег не є обов'язковим. Але тоді екземпляри структури, визначеної анонімно – без тегу, мають визначатись одразу після фігурної дужки, що закриває тіло структури. 2. При визначенні екземпляру структури в мові С вживання службового слова struct обов'язкове, а в С++ – може бути пропущене. 3. Обмежень на типи членів структури немає, крім одного – членом структури не може бути екземпляр даної структури, проте може бути вказівник на неї. 4. Структури можуть бути параметрами функцій та повертатись як результат функції.
Приклад. /* Визначаємо полярні координати на площині */ struct polar { float r; float phi; } /* Визначаємо точки a, b, c у полярній системі координат */ struct polar a, b, c; /* Доступ до членів структури через крапкову нотацію: */ a.r = 1; a.phi = 0;
Допустимі операції зі структурами: доступ до членів структури; копіювання й присвоєння структур; взяття адреси структури. Структури також можуть передаватись у функції в ролі параметрів і повертатись як результат функції. Приклад (продовження) struct polar { float r, phi; } struct polar a, b, *p; a.r = 1; a.phi = 0; b = a; // копіювання структури p = &b; // взяття адреси структури (*p).r = 5; // дужки обов'язкові, оскільки впливає порядок операційl Для спрощення запису доступу до членів структури, що адресується вказівником, використовується спеціальна операція, яка позначається –> (знак – і знак >). Отже, останній рядок можна записати таким чином: p –> r = 0; Зверніть увагу, ліворуч від –> знаходиться вказівник на структуру, праворуч – член структури.
Переліки в С/С++ Перелік в мові С(С++) – це тип даних, який використовується для створення набору іменованих констант. Синтаксис визначення переліку: enum { [=], [=], ... [=], };
Приклад. /* Використовуємо перелік для назв днів тижня */ enum Days { Mn = 1, Tu, Wn, Th, Fr, Sa, Su }; int main() { enum Days d; d = Th; cout
Об'єднання в С/С++ Об'єднання в мові С(С++) – це тип даних, який складається з визначеної кількості елементів, що називаються членами об'єднання (інколи – полями об'єднання). В пам'яті знаходиться завжди один і тільки один член об'єднання. Тобто об'єднання – це структура із нульовим зміщенням кожного поля відносно її початку. Синтаксис об'єднання : union tag_name { mem_1; //перший член об'єднання mem_2; //другий член об'єднання ... mem_n;//останній член об'єднання }; // крапка з комою обов’язкова Визначення екземпляру об'єднання : union tag_name id_example; // стиль С tag_name id_example; // стиль С++ Доступ до членів об'єднання – через крапкову нотацію або операцію –>, так само як і для структури.
Зауваження 1. Всі зауваження, які були зроблені щодо структур, справедливі і для об'єднань. 2. Об'єднання часто використовуються для неявного приведення типів – наприклад, можна записати одним членом об'єднання дійсне значення, а прочитати з іншого – ціле. Проте такі дії можуть привести до неочікуваних побічних ефектів.
Приклад. /* Використовуємо об'єднання для приведення типів – результат сумнівний */ union casting { int i; float f; unsigned u; }; int main() { union casting cast = {-1}; /* ініціалізувати можна лише перший член об'єднання */ cout
Бітові поля в С/С++ Бітові поля в мові С(С++) – це структура, яка складається з визначеної кількості окремих бітів. Для кожного члена такої структури вказується його довжина в бітах. Синтаксис : struct bit_field { mem_1 : n1; // n1 – довжина в бітах mem_2 : n2; // n2 – довжина в бітах ... mem_n : nn; // nn – довжина в бітах };
Схожі презентації
Категорії