
- •Вказівники на функції. Масиви вказівників на функції. Приклади.
- •В казівники на функції. Функції як параметри функцій. Приклади.
- •Функції з довільним числом параметрів. Приклади.
- •Обробка символів та масивів символів. Бібліотечні функції обробки символів.
- •Рядки. Подання рядків у пам’яті. Ініціалізація. Рядкові літерали.
- •Структури. Оголошення та ініціалізація. Розміщення у пам’яті. Приклади.
- •Структури. Вкладені структури. Доступ до полів структур, вкладених структур. Приклади.
- •Структури. Вказівники на структури. Динамічні структури. Приклади.
- •Структури з бітовими полями. Оголошення та ініціалізація. Обробка.
- •Структури як параметри та результати функцій.
- •Масиви структур. Оголошення, ініціалізація. Обробка.
- •Об’єднання. Розміщення у пам’яті. Ініціалізація. Обробка.
Об’єднання. Розміщення у пам’яті. Ініціалізація. Обробка.
Об'єднання - це змінна, яка може містити (у різні моменти часу) об'єкти різних типів і розмірів. Всі вимоги щодо розмірів і вирівнювання виконує компілятор. Об'єднання дозволяють зберігати різнорідні дані в одній і тій же області пам'яті без включення в програму машинно-залежної інформації.
Об'єднання схожі на структури, але виконують дещо інші функції. В об'єднанні всі змінні починаються з однієї адреси, вони поєднані в пам'яті, що дозволяє інтерпретувати одну і ту ж область пам'яті, як дані різного типу. Розмір об'єднання визначається максимальним розміром змінної. Формат об'єднання відрізняється від структури тільки службовим словом union: union ім'я { тип1 ім'я змінної 1; тип2 ім'я змінної 2; ... }; Об'єднання, як і структура, визначає новий тип даних і описується, як правило, поза опису функції, а змінні описуються, використовуючи його ім'я як ім'я нового типу. Крапка з комою в кінці опису об'єднання повинна обов'язково бути присутнім. Доступ до елементів об'єднання здійснюється так само, як до елементів структури - через точку для імені об'єднання, або по стрілці для звернення через покажчик. Приклад 1. Наприклад, є 4 прапори, і ми хотіли б скоротити час для операцій з кількома прапорами відразу. Для простоти розглянемо, як можна обнулити всі прапори однією операцією: union Flag { long g; char ch [4]; }; void main () { Flag fl; fl.ch [0] = 1; fl.ch [1] = 2; fl.ch [2] = 4; fl.ch [3] = 8; printf ("Flag =% x \ n", fl.g); fl.g = 0; / / Всі прапори рівні 0 printf ("Flag = NULL \ n"); for (int i = 0; i <4; i + +) printf ("% d \ n", (int) fl.ch [i]); } Ми описали об'єднання, як змінну типу long і, одночасно, у вигляді масиву типу char. Тепер, для змінної типу Flag, ми можемо працювати з кожним прапором незалежно, чи, використовуючи операцію зі змінною типу long, обнулити всі прапори простий операцією привласнення fl.g = 0;.