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


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


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


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


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


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


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


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


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


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



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Основні теоретичні відомості

Структура - це об’єднання однієї або більше змінних, можливо, різних типів, в одну групу, що для простоти роботи має одне ім’я.

Структури використовують для організації складних даних в великих програмах. Тому що вони в багатьох ситуаціях дозволяють групувати в єдине ціле поріднені між собою змінні та працювати з ними як з єдиним цілим, а не з окремими складовими. Структури також дозволяють створювати нові типи даних.

Використання покажчиків зі структурами бажане по трьом причинам: їх легше використовувати; структура не може використовуватись в якості аргументу функції, а покажчик на структуру може; багато типових структур даних є структурами які містять покажчики на інші структури.

Загальна форма об’явлення структури наступна:

struct ім’я_структури {

тип 1 поле 1;

тип 2 поле 2;

……

тип n поле n;

} список_змінних;

Наприклад. Об’явимо новий тип stud

struct stud {

char name[80];

int age;

double b;

} st1, st2;

stud Ivan,Petr; //Об’являємо змінні Ivan, Petr типа stud

На рис. 8.1 наведена уява змінної st1 у пам’яті.

 
 


st1  
 

 

name       80 байт
age       2 байт
b       8 байт

Рисунок 8.1 – Ділянка пам’яті, що виділена під змінну st1

Отже, під змінну st1 в пам’яті виділяється 86 байт

При визначенні структур можлива їх ініціалізація, тобто задання початкових значень їх елементів. Наприклад:

stud st1={“Ivanov”, 20, 4.6};

Для звертання до елемента структури використовують оператор ‘.’:

ім‘я_структури.ім’я_елемента_структури

Наприклад:

st1.name=”Ivan”;

st1.age=20;

gets(st2.name);

for (int t=0; st1.name[t]; t++) cout<<st1.name[t];

В С++ вміст однієї структури можна присвоїти другій, якщо обидві ці структури мають один тип.

Наприклад:

struct tt{

int a, b;} var1, var2;

var1=var2;

В С++ покажчики на структури можна використовувати таким самим чином, як і покажчики на змінні різного типу.

ім‘я_структурного типу *ім’я покажчика_на_структуру;

Наприклад:

stud *pStud;

pStud=&st1;

В С++ для того, щоб отримати доступ до членів структури за допомогою покажчика, використовується оператор „–>”.

pStud–>age;

Інша можливість звернення до елементу структури за допомогою адресуючого її покажчика – це розіменування покажчика та формування уточнюючого ім’я такого виду:

(*ім’я_покажчика).ім’я_елемента_структури

Покажчик на структуру може входити до визначення того ж структурного типу. Саме так у визначенні формата структуру record введені два покажчики:

record *prior – покажчик на попередній елемент у двохзв’язному списку структур;

record *next – покажчик на наступний елемент у двозв’язному списку структур.

Об’єднання.

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

 

union ім’я_типу (

тип 1 поле 1;

тип 2 поле 2;

- - - - - - - - - -

тип N поле N;

} перелік_змінних;

 

Наприклад:

union { long L; int il, i2; char с[4]; } UNI;

На рис.8.2 ми можемо побачити уяву змінної UNI у пам’яті.

 

    ← long L →
    байт байт байт байт
Ділянка пам’яті   ← int i1 →    
    ← int i2 →    
    ← chsr c[4] →

 

Рисунок 8.2 – Схема розміщення в пам’яті об’єднання UNI

 

Відповідно до структур звернення до елемента об’єднання можливо через им’я об’єднання або через покажчик:

 

ім’я_объеднання.ім’я_елемента

покажчик_на_об’єднання->і’мя_елемента

(*покажчик_на_об’єднання).і’мя_елемента

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

1. Чим відрізняється визначення шаблона структури від визначення структури?

2. Запишіть (у виді прикладів) способи доступу до членів структури, до елементів масиву ‑ члена структури, до членів структури, що є елементом масиву.

3. Що означає код (*str).alphaі як його ще можна записати?

4. Як ініціалізувати елементи структури?

5. Напишіть код, що визначає розмір масиву структур.

6. Чи правильний запис struct x{int x,y;double z[2];}x;?

7. Схематично показати розподіл пам'яті для структури

struct{int alfa;

int a : 5;

int b : 3;

char ch;}record;

8. Наведіть приклад використання структури в іншій структурі. Привласніть значення одному елементу цієї структури.

9. Що таке об'єднання (union)? Як створити шаблон об'єднання і саме об'єднання?

10. Схематично показати розподіл пам'яті для об'єднання

union{long word;

char delta;

int number;

char gamma[4];}UN;

11. Як ініціалізувати об'єднання?

12. Чим структура відрізняється від об'єднання?

13. Для чого можна використовувати бітові поля?

14. Як задається розмір бітового поля при описі його в структурі?

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

16. Чи може до бітового поля застосовуватися операція "одержати адресу" &?





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

<== попередня сторінка | наступна сторінка ==>
Індівідуальні завдання | Д.2. Функція scanf()

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

 

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


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