Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Опишіть такі аґреґатні типи даних, як структура і об’єднання, їх основні відмінності.
Структура - це складовою тип даних, який складається з елементів різних типів. Оголошення структури слід розглядати як оголошення типу. Зауваження. В C + + структури містять в собі не тільки дані, але і код і відносяться до засобів об'єктно-орієнтованого програмування. В даному розділі об'єктні властивості структур не розглядаються.Приклад. Оголошення структури, яка зберігає відомості про журнал: назва, рік, номер. struct magazin {char * tittle; int year; int number; }; Нижче визначена і инициализирована мінлива структура mag.magazin mag = {" Nature", 3, 1995); Доступ до елементів структури здійснюється по складеному імені: імя_структури.імя_елемента. Тут точка позначає оператор вибору, а складене ім'я дає ще один приклад адресного вираження. Якщо є вказівник на структуру, то доступ до елемента возмо жен за допомогою операції непрямого вибору: указатель_на_структуру-> імя_елемента. Стрілка, складена з двох символів, позначає оператор непрямого вибору. Структури можна привласнювати, передавати у вигляді параметрів функції, повертати у вигляді результату функції. Структури не можна порівнювати операціями ==, / =, <, > і т.п. Структури, як і масиви, можна ініціалізувати списком значень. Приклад. Робота зі структурою magazin. / / Оголошення і ініціалізація magazin * pm, m = (" Nature", 2000, 4}; / / Доступ до елементівcout «m.tittle«" " «m.number«endl; / / Одна структура у вільній пам'яті * Pm = new magazin; * Pm = m; pm-> tittle = " Nature"; delete pm; / / Масив структур у вільній пам'яті pm = new magazin [10]; pm [0]. tittle = " Природа"; delete [] pm;
· Об'єднання C + + дуже схожі на структури, за винятком того, як C + + зберігає їх у пам'яті, крім того, об'єднання може зберігати значення тільки для одного елемента в кожен момент часу. · Об'єднання являє собою структуру даних, подібну структурі C + +, і складається з частин, які називаються елементами. · Об'єднання визначає шаблон, за допомогою якого програми далі оголошують змінні. · Для звернення до певного елементу об'єднання ваші програми використовують оператор C + + точку. · Щоб змінити значення елемента об'єднання всередині функції, ваша програма повинна передати змінну об'єднання у функцію за допомогою адреси. · Анонімне об'єднання є об'єднання, у якого немає імені (тега). Як ви дізнаєтеся, об'єднання дуже схожі на структури C + +, проте спосіб, за допомогою якого C + + зберігає об'єднання, відрізняється від способу, за допомогою якого C + + зберігає структури.
Усередині ваших програм об'єднання C + + дуже схожі на структури. Наприклад, наступна структура визначає об'єднання з ім'ям distance, що містить два елементи:
union distance
{ int miles; long meters; };
Як і у випадку зі структурою, опис об'єднання не розподіляє пам'ять. Натомість опис надає шаблон для майбутнього оголошення змінних. Щоб оголосити змінну об'єднання, ви можете використовувати будь-який з таких форматів:
union distance { union distance { int miles; int miles; long meters; long meters; } japan, germany, franee; }; distance japan, germany, franee;
Як бачите, дане об'єднання містить два елементи: miles і meters. Ці оголошення створюють змінні, які дозволяють вам зберігати відстані до зазначених країн. Як і для структури, ваша програма може присвоїти значення будь-якого елементу. Однак на відміну від структури значення може бути присвоєно лише одному елементу в кожен момент часу. Коли ви оголошуєте об'єднання, компілятор C + + розподіляє пам'ять для зберігання самого великого елемента об'єднання. У разі об'єднання distance компілятор розподіляє достатньо пам'яті для зберігання значення типу long
|