Створення динамічних масивів int * psome = new int [10]; delete [ ] psome; Зауваження int * pi = short * ps delete [ ] delete ps; new int; = new short [500]; pi; // не бажано
# include
Типи даних, що визначаються користувачем • Створення нового типу typedef тип ім’я_типу [розмірність]; Приклади: 1. typedef unsigned short int kilkist; kilkist k 1, k 2; 2. typedef char Sms[100]; Sms str[20];
• Зліченний тип Утворюється зі списку іменованих сталих цілого типу. enum [ім’я_типу] {список_констант}; enum [ім’я_типу]={список_констант}; Наприклад: enum week = {mon, tue, wed}; enum colors = {red = 1, green, yellow=6, white}; Імена констант повинні бути унікальними, а значення можуть співпадати.
• Структури struct [ім’я_типу] { <тип_поля_1> <назва_поля_1>; … <тип_поля_n> < назва_поля_n >; } [список змінних і вказівників]; Приклад: 1. struct grupa { char name[20], surname[20]; float ser_bal; };
2. 3. 4. struct grupa { char name[20], surname[20]; float ser_bal; } gr 1, gr 2, *p; struct grupa { char name[20], surname[20]; float ser_bal; }gr = {“Ярмоленко”, “Петро”, 4. 6}; struct complex{ float real, im; }copml [2][3] = { {{1, 1}, {1, 1}}, {{2, 1}, {1, 3}, {2, 3}} };
• Для змінних одного і того ж структурного типу може бути застосована операція присвоєння. • Структуру можна предавати в функцію і повертати як значення функції. Доступ до полів структури. 1. <ім’я змінної>. <назва поля> gr 1. name = “Петров”; 2. <назва вказівника>-><назва поля> p->ser_bal = 4. 8;
Бітові поля – особливий вид полів структури. Вони використовуються для щільного зберігання даних. Під час опису після імені через двокрапку вказується довжина поля в бітах (ціла додатня константа). Адресу поля отримати не можна, але у всьому іншому використовуються так само як і поля стуктури. Ім’я поля може бути відсутнє. Розміщення бітових полів у пам’яті залежить від компілятора і апаратури.
Наприклад: struct Options{ bool Cen_X: 1; bool Cen_Y: 1; unsigned int shadow: 2; unsigned int palette: 4; };
• Об’єднання – це окремий випадок структури, усі поля якої знаходяться за однією і тією ж адресою. У певний момент часу у змінній цього типу зберігається лише одне значення. Застосовують лише у тому випадку, коли відомо, що більше одного поля одночасно не вимагається. Довжина об’єднання дорівнює найбільшому полю. union distance { int miles; long meters; };
#include
• Об’єднання може ініціалізуватися тільки значенням першого елемента. • Об’єднання не може містити бітові поля. • Об’єднання не може містити віртуальні методи, конструктори, деструктои і операцію присвоєння. • Об’єднання не може входити в ієрархію класів.