Лекція 9. Масиви. Поняття. Приклади. Особливості програмування
| Сайт: | Навчально-інформаційний портал НУБіП України |
| Курс: | Основи програмування |
| Книга: | Лекція 9. Масиви. Поняття. Приклади. Особливості програмування |
| Надруковано: | Гість-користувач |
| Дата: | неділя, 15 лютого 2026, 19:43 |
1. Порівняння масивів і покажчиків
Звичайно покажчики рідко вживаються для простих даних. Частіше вони зв'язуються зі складними типами, зокрема, з масивами.
У мовах високого рівня, наприклад Pascal, операції з елементами масивів реалізуються індексною арифметикою. У машинно-орієнтованих мовах ці операції реалізуються непрямою адресацією, яка є швидшою. Ця можливість існує й у мові С і полягає у використанні покажчиків. Тому покажчики й масиви тісно зв'язані.
Їхнє використання ефективніше, ніж з індексною арифметикою. Але зрозуміти такі програми важче.
Можна зробити деякі порівняння. Повне ім'я масиву є адресою базового елементу, покажчик також набуває значення адреси. Тому іноді говорять, що повне ім'я масиву є покажчиком. Але це не можна розуміти буквально.
2. Покажчики і багатовимірні масиви
Ім'я масиву дорівнює базовій адресі цієї ділянки. Тобто на увесь час виконання програми за ділянкою пам'яті закріплюється ім'я масиву. Тому воно є константою і його не можна змінювати під час виконання програми за допомогою оператора присвоєння.
Зміст масивів можна змінювати, наприклад, за допомогою функції копіювання або введення.
Покажчики і багатовимірні масиви
Існує двувимірний масив:
int matr[3][2]; int *pr;
Ясно, що им’я matr дорівнює адресу базового елемента matr==&matr[0][0]; тому післе присвоєння pr=matr
pr+1==matr[0][1] pr+2==matr[1][0] pr+3==matr[1][1]
Двовимірний масив - це є масив, який складається з масивів, і повне ім'я масиву є адресою базового елемента. Тому перший рядок буде мати ім'я matr[0], другий matr[1], третій matr[2]. Ці імена мають значення адрес перших елементів відповідного рядка.
З цього випливає, що поруч із повним іменем масиву matr, іменами окремих елементів matr[і][j] можна вживати й імена окремих рядків matr[і]. (В інших мовах, наприклад, Паскалі коли масив двомірний, то вживання імені з одним індексом є помилкою).
Отже, відкривається можливість працювати із двомірним масивом через одномірний. Із цього випливає також, що двомірний масив може бути заданий як одномірний масив покажчиків.
Для того, щоб скопіювати рядок, зовсім не потрібно його фізично копіювати, а досить лише дорівняти відповідні покажчики. Також при сортуванні можна переставляти не рядки, а їх покажчики.
3. Приклади
Розглянемо програму введення, сортування й виведення рядків. Використовуємо два масиви: рядків char **str і масив покажчиків char *tstr, який зв'яжемо з масивом str, де nums -максимальна кількість рядків, а numc - розмір рядків;
Сортування будемо проводити перестановкою покажчиків у масиві str. Сам же масив str буде залишатися незмінним.
Для порівняння рядків будемо використовувати функцію strcmp (str1, str2), аргументами якої є імена рядків або відповідні покажчики.
Для сортування можна використовувати метод бульбашки із змінним зсувом, який розглядали раніше.
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу