Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
31.01.2021
Размер:
9.8 Кб
Скачать

Інформатика — Теорія — Застосування об'єднань    Автори

|

Контакти

|

Підсистема допомоги

|

Методичні вказівки

|

Анотація

|

Назад

   ІнформатикаОб'єднання : Застосування об'єднаньЗміст курсу

Вступ

Теорія

Застосування об'єднань

Анонімне об'єднання

Висновки

Версія для друку

  Застосування об'єднань      Об'єднання дозволяють в різні моменти часу зберігати в одному об'єкті значення різного типу. В процесі оголошення об'єднання з ним асоціюється набір типів, які можуть зберігатися в даному об'єднанні. В кожний момент часу об'єднання може зберігати значення тільки одного типу з набору. Контроль за тим, значення якого типу зберігається в даний момент в об'єднанні покладається на програміста.Синтаксис :union [ім'я_об'єднання] {     тип1 елемент1;     тип2 елемент2;     ........................     типN елементN;} [список описів];

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

     Як і у випадку зі структурою, опис об'єднання не розподіляє пам'ять. Замість цього опис надає шаблон для майбутнього оголошення змінних. Щоб оголосити змінну об'єднання, можна використовувати кожен з наступних форматів:

union distance

{     int miles;

     long meters;

} japan, germany, franсe;

     Дане об'єднання містить два елементи: miles і meters. Ці оголошення створюють змінні, які дозволяють зберігати відстані до зазначених країн. Як і для структури, в програмі можна привласнити значення будь-якому елементу. Однак на відміну від структури значення може бути привласнено тільки одному елементу в кожний момент часу. При оголошенні об'єднання, компілятор C++ розподіляє пам'ять для зберігання найбільшого елемента об'єднання. У випадку об'єднання distance компілятор розподіляє досить пам'яті для зберігання значення типу long. Припустимо, що в програмі привласнюється значення елементу miles, як показано нижче:

japan.miles = 12123;.

Якщо далі в програмі привласнюватиметься значення елементу meters, значення, привласнене елементу miles, губиться.

     Ініціювати об'єднання при його оголошенні можна тільки завданням значення першого елемента об'єднання.

Наприклад:

union unionA

{

     char ch1;

     float f1;

} a1={ 'M' };.

Приклад 1. Наступна програма ілюструє використання об'єднання distance. Спочатку програма привласнює значення елементу miles і виводить це значення. Потім програма привласнює значення елементу meters. При цьому значення елемента miles губиться:

#include <iostream.h>

void main ()

{     union distance

     {

          int miles;

          long meters;

     } walk;

     walk.miles = 5;

     cout << "Пройдена відстань у милях " << walk.miles << endl;

     walk.meters = 10000;

     cout << "Пройдена відстань у метрах " << walk.meters << endl;

}

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

 © 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.uaРозроблено за допомогою LERSUS

Соседние файлы в папке content