Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контрольні запитання

Об’єднання й операції з ними

У C++ є особлива конструкція, оголошення якої нагадує синтаксис оголошення структури, але має зовсім інший фізичний зміст. Мова йде про об’єднання (іноді називаються союзами).

Об’єднання служить для розміщення в одній і тій же області пам’яті (по тому самому адресу) даних різних типів. Очевидно, що в окремий момент часу в пам’яті може знаходитися тільки один із зазначених при оголошенні об’єднання типів.

Оголошення об’єднання починається з ключового слова union, за яким слідує ідентифікатор і блок опису елементів різного типу, наприклад:

union MyData

{

int iVarl ;

unsigned long ulFreq;

char Symb[10] ;

}

При цьому в пам’яті компілятором резервується місце для розміщення найбільшого елемента об’єднання, у даному випадку - 10 байт під символьний масив. Найчастіше об’єднання включають до складу структур, а також служать для перетворення даних одного типу в іншій. Доступ до елементів об’єднання виробляється за допомогою операції крапка (.). Нижче наведемо приклад такого об’єднання.

На відміну від структур, змінна типу об’єднання може бути проініціалізована тільки значенням першого оголошеного члена (у даному випадку - цілочисельної змінної iVarl):

union MyData

{

int iVarl ;

unsigned long ulFreq;

char Symb[10J ;

} my = {25};

У якості прикладу розглянемо використання об’єднань і структур для неявного перетворення даних, представлених у десятковому форматі, у двійково-десятковий код. Як відомо, двійково-десяткові дані являють собою різновид упакованих значень, у яких для представлення десяткової цифри використовується одна тетрада (чотири біти). Таким чином, двійково-десяткове число може приймати значення від 0x00 до 0x99 або в десятковому виді - від 0 до 153. Для рішення поставленої задачі сконструюємо об’єднання BCD, що містить однобайтний член. Як інший елемент об’єднання створимо однобайтну структуру з застосуванням бітових полів:

#include <iostream.h>

union BCD

{

unsigned char data;

struct

{

unsigned char lo: 4;

unsigned char hi: 4;

} bin;

} bcd;

 

int main ( )

{

bcd.data = 152;

cout << "\nHigh:"<< (int)bcd.bin.hi;

cout << "\nLow:"<<(int)bcd.bin.lo;

return 0;

}

У тілі функції main () виробляється ініціалізація двійково-десяткової змінної bсd двійковим значенням 152 з наступним її розкладанням на старший і молодший напівбайт.

 

1. Дайте визначення поняття структури.

2. Охарактеризуйте операції над структурами.

3. Яким чином структура дозволяє заощаджувати пам’ять?

4. Опишіть оголошення масиву структур.

5. Опишіть синтаксис оголошення структури через вказівник.

6. Яким чином здійснюється доступ до елементів структури?

7. Опишіть синтаксис оголошення структури через посилання.

8. Дайте визначення поняття об’єднання.

9. Охарактеризуйте призначення об’єднань.

10. Опишіть синтаксис оголошення об’єднань.

11. Охарактеризуйте поняття користувацького типу даних.


Читайте також:

  1. Бесіда за запитаннями.
  2. Відповісти на запитання письмово.
  3. Відповісти на запитання письмово.
  4. Відповісти на запитання письмово.
  5. Відповісти на запитання письмово.
  6. Відповісти на запитання письмово.
  7. Грошові кошти — готівка, кошти на рахунках у банку та депозити до запитання.
  8. Дайте відповіді на контрольні питання
  9. Закриті запитання
  10. Запитання
  11. ЗАПИТАННЯ
  12. ЗАПИТАННЯ




Переглядів: 616

<== попередня сторінка | наступна сторінка ==>
Бітові поля | Програмування належить до інформатики або комп’ютерних наук.

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.003 сек.