Ноу Інти, лекція, символьні масиви в мові з
Анотація: В лекції слід вивчити завдання і ініціалізацію символьних масивів в мові програмування С, вивчити рішення задач з символьними масивами, вивчити базові функції для роботи з рядками.
Теоретична частина
При цьому в разі визначення довжини рядка результатом буде число 6. Розмір рядка не зміниться, якщо в ній вказати символ закінчення рядка:
Аналогічно числовим масивів в мові С можуть використовуватися масиви рядків, тобто набір одновимірних масивів символів. Наприклад, сервер бази даних звіряє команди користувачів з масивом допустимих команд [6.2]. Як масиву рядків для цього випадку буде служити двомірний символьний масив. Розмір лівого вимірювання визначає кількість рядків, а правого - максимальну довжину кожного рядка [6.2]. наприклад:
Число 30 - це кількість рядків масиву, а число 80 - максимальна довжина кожного рядка з урахуванням нульового символу завершення рядка.
Щоб звернутися до окремому рядку двомірного символьного масиву, досить вказати тільки лівий індекс оголошеного масиву.
Багатовимірні символьні масиви утворюються, як і числові масиви:
6.1. Одномірні символьні масиви - рядки
Одновимірна масив - це список пов'язаних однотипних змінних.
Загальна форма запису одновимірного масиву [6.2]:
У наведеній записи елемент тип оголошує базовий тип масиву. Кількість елементів, які будуть зберігатися в масиві з ім'ям імя_массіва. визначається елементом розмір.
У мові С індексація масиву (символьного або числового) починається з нуля.
Доступ до окремого елементу масиву здійснюється за допомогою індексу. Індекс описує позицію елемента всередині масиву.
Для масиву символів при ініціалізації масиву необхідно резервувати місце для символу закінчення рядка, тобто для символу '\ 0'.
Строкова константа - це набір символів, взятих в подвійні апострофи, наприклад, "hello".
В кінець символьного рядка не потрібно обов'язково додавати нуль, компілятор мови С робить це автоматично. При ініціалізації символьного рядка як одновимірного масиву необхідно передбачити місце для нульового символу, наприклад:
Кожен рядок містить на один символ більше, ніж задано явно. всі рядки закінчуються нульовим символом, який має значення 0.
Для одновимірних масивів загальний розмір масиву в байтах обчислюється за формулою:
6.2. Двомірні символьні масиви
Двомірний масив являє собою список одновимірних масивів.
Загальна форма запису двомірного масиву:
У наведеній записи размер1 означає число рядків двовимірного масиву, а размер2 - кількість стовпців. При цьому розмірність размер2 визначає максимальну довжину для заданого масиву. Зазвичай размер2 задають з деяким запасом.
У двомірному масиві позиція будь-якого елементу визначається двома індексами. Індекси кожного з розмірів масиву починаються з нуля.
Місце зберігання для всіх елементів масиву визначається під час компіляції. Пам'ять, виділена для зберігання масиву, використовується протягом всього часу існування масиву.
Для двомірних масивів заданого типу загальний розмір масиву в байтах обчислюється за формулою:
Ініціалізація двомірного символьного масиву може бути визначена або посимвольний, або через підрядник, наприклад
Число 80 взято з запасом для можливої довжини рядка. Число 3 - це кількість рядків двовимірного масиву. В обох випадках можуть бути додані символи закінчення рядка ( '\ 0'). Символ '\ 0' не виводиться на екран дисплея і не передається в файл, наприклад, в текстовий файл. У той же час необхідно пам'ятати, що кожен рядок закінчується нульовим символом.
6.3. Багатовимірні символьні масиви
Загальна форма запису багатовимірного масиву:
Індексація кожного розміру починається з нуля. Елементи багатовимірного масиву розташовуються в пам'яті в порядку зростання самого правого індексу. Тому правий індекс буде змінюватися швидше, ніж лівий (ліві). При цьому в кінці кожного рядка мається на увазі нульовий символ.
Для багатовимірних масивів загальний розмір багатовимірного масиву в байтах обчислюється за формулою:
Очевидно, багатовимірні масиви здатні зайняти великий обсяг пам'яті, а програма, яка їх використовує, може дуже швидко зіткнутися з проблемою нестачі пам'яті.
Для визначення розміру типу в байтах застосовується функція sizeof (). яка повертає ціле число. Наприклад, sizeof (char).
При ініціалізації багатовимірних масивів необхідно вказати всі дані (розмірності) за винятком крайньої зліва розмірності. Це потрібно для того, щоб компілятор зміг визначити довжину подмассивов, складових масив, і зміг виділити необхідну пам'ять.