
- •Вказівники на функції. Масиви вказівників на функції. Приклади.
- •В казівники на функції. Функції як параметри функцій. Приклади.
- •Функції з довільним числом параметрів. Приклади.
- •Обробка символів та масивів символів. Бібліотечні функції обробки символів.
- •Рядки. Подання рядків у пам’яті. Ініціалізація. Рядкові літерали.
- •Структури. Оголошення та ініціалізація. Розміщення у пам’яті. Приклади.
- •Структури. Вкладені структури. Доступ до полів структур, вкладених структур. Приклади.
- •Структури. Вказівники на структури. Динамічні структури. Приклади.
- •Структури з бітовими полями. Оголошення та ініціалізація. Обробка.
- •Структури як параметри та результати функцій.
- •Масиви структур. Оголошення, ініціалізація. Обробка.
- •Об’єднання. Розміщення у пам’яті. Ініціалізація. Обробка.
Рядки. Подання рядків у пам’яті. Ініціалізація. Рядкові літерали.
Рядки. Подання рядків у пам’яті. Ініціалізація. Рядкові літерали.
Рядок - це послідовність символів. Як відомо, послідовності в С++ представляються масивами або покажчиками. Програми на C++ зберігають рядки як масиви типу char. Для оголошення строкової змінної усередині програми просто оголосіть масив типу char з кількістю елементів, достатнім для зберігання необхідних символів.
char s[64];
Головна відмінність між символьними рядками та іншими типами масивів полягає в тому, що C++ визначає останній елемент масиву. Програми на C ++ представляють кінець символьного рядка за допомогою символу NULL, який в C++ зображується як спеціальний символ '\ 0', або нульовий байт.
Створення рядків
Проілюструємо створення рядків на фрагментах коду з коментарями.
char str1[10]; // Рядок - масив з 10 символів. // Початкове значення символів не визначено. char str2[10]="Hello"; /* Використовується ініціалізація (не присвоювання!). У перші 5 символів записується "Hello", у 6 - нуль-термінатор, значення трьох останніх не визначено.*/
char str3[10]={'H', 'e', 'l', 'l', 'o', '\0'}; //еквівалентно попередньому.. char str4[10]="Verylongline"; // Помилка. // Масив з 10 елементів не можна ініціювати довшої послідовністю
char str5[]="Verylongline"; // А так можна. Масив з 15 елементів.
Присвоєння рядків
Перший і найочевидніший спосіб присвоювання рядків - присвоювання окремих символів.
Наприклад,
str1[0]=’H’;
str1[1]=’e’;
str1[2]=’l’;
str1[3]=’l’;
str1[4]=’o’;
str1[5]=’\0’;
Інші способи:
char s[200]; // масив з кількістю елементів, достатнім для зберігання необхідних символів
cin>>s; // ввід з консолі до першого пробілу або до натиснення «Enter»
cin.getline(s, 200); // ввід з до натиснення «Enter» 200 – максимальна кількість символів
Рядки. Ввід - вивід рядків.
Структуровані типи даних: рядки у С. Стандартні функції пошуку у рядку.
Структуровані типи даних: рядки у С. Порівняння рядків. Конкатенація рядків.
Бібліотечні функції копіювання, перетворення рядків. Приклади..
Бібліотечні функції для об’єднання рядків, розбиття рядка на лексеми. Приклади.
Масиви рядків. Оголошення. Ініціалізація. Обробка.
Обробка масивів структур чи об’єднань у С++.
Масив, елементами якого є структури, називається масивом структур. Опис масиву структур відбувається за аналогією з описом окремої структури в два етапи, при цьому опис шаблону нічим не відрізняється, а при визначенні структурної змінної після її імені вказується розмірність у квадратних дужках:
Struct <ім’я шаблону><ім’я структурної змінної>[розмірність];
Наприклад: struct stt d[100];
Визначений масив d, що складається зі 100 елементів типу stt.
У цьому разі компілятор виділяє пам’ять зі 100 елементів stt, довжина кожного з яких є сумою довжин елементів структури stt.
Структури та об’єднання у С++. Мета використання.
Структура - це іменована сукупність змінних можливо різних типів, розташована в пам'яті послідовно один за одним. Структури називаються користувача типами даних і допомагають в організації складних даних, оскільки дозволяють групу пов'язаних між собою змінних трактувати не як безліч окремих елементів, а як єдине ціле. Об'єднання - це змінна, яка може містити (у різні моменти часу) об'єкти різних типів і розмірів. Всі вимоги щодо розмірів і вирівнювання виконує компілятор. Об'єднання дозволяють зберігати різнорідні дані в одній і тій же області пам'яті без включення в програму машинно-залежної інформації.
Об'єднання застосовується для наступних цілей: - Ініціалізації використовуваного об'єкта пам'яті, якщо в кожний момент часу лише один об'єкт з багатьох є активним; - Інтерпретації основного подання об'єкта одного типу, як якщо б цього об'єкту було присвоєно інший тип.
Використання об'єднань не тільки економить пам'ять, але дає також можливість різної інтерпретації значень в пам'яті.
Обєднання слугують для зберігання (послідовного, не одночасного) в деякій ділянці оперативної памяті компютера даних різних типів. Потреба в цьому виникає наприклад під час створення таблиці з даними ріхних типів.