МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Основні теоретичні відомостіСтруктура - це об’єднання однієї або більше змінних, можливо, різних типів, в одну групу, що для простоти роботи має одне ім’я. Структури використовують для організації складних даних в великих програмах. Тому що вони в багатьох ситуаціях дозволяють групувати в єдине ціле поріднені між собою змінні та працювати з ними як з єдиним цілим, а не з окремими складовими. Структури також дозволяють створювати нові типи даних. Використання покажчиків зі структурами бажане по трьом причинам: їх легше використовувати; структура не може використовуватись в якості аргументу функції, а покажчик на структуру може; багато типових структур даних є структурами які містять покажчики на інші структури. Загальна форма об’явлення структури наступна: 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 у пам’яті.
Рисунок 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 у пам’яті.
Рисунок 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. Чи може до бітового поля застосовуватися операція "одержати адресу" &?
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|