Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lexzii_08 / lexs_3_Mas.doc
Скачиваний:
17
Добавлен:
17.05.2015
Размер:
120.32 Кб
Скачать

Лекція 3.

Масив в Сі. Початкові відомості.

Масив – це сукупність елементів будь-якого допустимого одного типу. Елементи масиву створюють послідовність, впорядковану по номерах їх елементів. Масиви можуть бути створені із арифметичних даних, символів, рядків структур, покажчиків файлів.

Визначення масиву визначає параметри, характерні тільки для масивів, - розмірність і розмір:

  1. Розмірність (кількість вимірювань) масиву визначає кількість індексів при зверненні до елементів в масиву;

  2. Розмір масиву – це кількість його елементів.

Форма обявлення масиву:

імя типу імя масиву [k1] [k2] …[kn];

де k1 – kn – кількість елементів масиву по 1..n вимірюванням. Причому значення індексів по відповідним і-вимірюванням можуть змінюватись в межах від 1 до

(ki - 1).

Наприклад:

int a [5]; - одновимірний масив на 5 значень цілого типу;

float b[10][20];- двовимірний масив із 10 рядків і 20 стовпців. Номер елементів масиву а змінюється від 0 до 4; а [0]..[4]. Для звертання до елементів масиву використовують імя масиву, після якого в квадратних дужках стоїть індекс в вигляді виразу, визначаючого значення індексу – порядкового номера елемента масиву. Допустимість значень індексів контролює програміст.

Індексів в квадратних дужках може бути стільки, скільки вимірювань в масиві; кожний індекс в своїх квадратних дужках.

Приклади звертань до елементів масиву:

a [i], a [i+2] – одновимірного;

b [0] [0], b [i] [j], b [9] [9] – двохвимірного;

c [i] [j] [k], c [i+2] [2*j-1] [k] – трьохвимірного масиву.

Кількість вимірювань масивів Сі не обмежена. В памяті елементи масиву розташовуються так, що при переході від елемента до елемента найбільш швидко змінюється самий правий індекс масиву. Тобто матриця розташовується в памяті по рядкам. Операцій над масивами в Сі немає. Пересилка елементів одного масиву в інший може бути реалізована тільки поелементно, за допомогою циклу. Над елементами масиву допускаються ті ж операції, що і над скалярними змінними того ж типу. Введення і виведення значень елементів масивів із текстового потоку можливо проводитти тільки поелементарно.

Початковим значенням елементам масиву можна присвоїти при його визначенні. Форма ініціалізаціїї значень для одновимірного масиву:

Тип імя – масиву [k] = {список значень};

Наприклад:

Int a[5] = {1, 5 , 3 , 4 ,2};

Float b[ ] = {1.2, 3.4, 5.4, - 2.5, 0.3, -55. };

Якщо розмір одновимірного масиву не вказаний (при визначенні маємо тільки квадратні дужки), то його визначає кількість ініційованих значень елементів масиву. В прикладі масив а[] має 5 елементів, а масив b[] – 6 елементів.

При ініціалізації багатовимірних масивів використовуються вкладені списки значень в фігурних дужках, відокремлених комами.

Наприклад:

Int a[2][4] = {{1, 2, 3, -4}, // - елементи 0-го рядка

{5, 6, -7, 8}}; // - елементи 1-го рядка

В Сі немає масивів зі змінними межами. Але, якщо кількість елементів масиву відома до виконання програми, можливо визначити його як константу за допомогою директиви # define, а потім використовувати її при визначенні границь масиву. Іменовані константи, визначені специфікатором const, не можна використовувати при визначенні границь масиву. Якщо кількість елементів масиву визначається в процесі виконання програми, використовують динамічне виділення ОП, наприклад, за допомогою функції malloc.

Наприклад:

# define m 5 // визначення значення m

main ( )

{ int a[m]; // обява масивів на m елементів

float b[m];

Соседние файлы в папке lexzii_08