Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Mova_S.doc
Скачиваний:
19
Добавлен:
23.02.2016
Размер:
1.14 Mб
Скачать

Int s[2][3];

Якщо при звертанні до деякої функції написати s[0], то буде передаватися нульовий рядок масиву s.

Int b[2][3][4];

При звертанні до масиву b можна написати, наприклад, b[1][2]. Тоді буде передаватися вектор із чотирьох елементів. Звернення b[1] поверне двовимірний масив розміром 3 на 4. Не можна записати b[2][4], маючи на увазі, що буде передаватися вектор, тому що це не відповідає обмеженню накладеному на використання перетинів масиву.

Приклад оголошення символьного масиву.

char str[] = "оголошення символьного масиву";

Варто враховувати, що в символьному літералі знаходиться на один елемент більше, тому що останній з елементів є керуючою послідовністю '\0'.

Структури

Cтруктура – це складений об'єкт, у який входять елементи будь-яких типів, за винятком функцій. На відміну від масиву, що є однорідним об'єктом, структура може бути неоднорідною.

Тип структури визначається записом виду:

struct { список визначень }

У структурі обов'язково повинен бути зазначений хоча б один компонент. Визначення структур має такий вигляд:

<тип-даних> <опис>;

де <тип-даних>вказує тип структури для об'єктів, визначених в назві. У найпростішій формі<опис>– ідентифікатор або масив.

Приклад:

struct { double x,y; } s1, s2, sm[9];

struct { int year;

char month, day;} date1, date2;

Змінні s1, s2 визначаються як структури, кожна з яких складається із двох компонентів х та y. Змінна sm визначається як масив з дев'яти структур. Кожна із двох змінних date1, date2 складається із трьох компонентів year, month, day. Існує і інший спосіб асоціювання імені з типом структури, він базується на використанні тегу структури. Тег структури аналогічний тегу перераховуваного типу. Тег структури визначається в такий спосіб:

struct <тег> { список описів; };

де <тег> є ідентифікатором.

У наведеному нижче прикладі ідентифікатор student описується як тег структури:

struct student { char name[25];

int id, age;

char prp; };

Тег структури використається для наступного оголошення структур даного виду у формі:

struct <тег> <список-ідентифікаторів>;

Приклад:

struct student st1,st2;

Використання тегів структури необхідне для опису рекурсивних структур. Нижче розглядається використання рекурсивних тегів структури.

struct node { int data;

struct node * next;} st1_node;

Тег структури node дійсно є рекурсивним, тому що він використовується у своєму власному описі, тобто у формалізації покажчика next. Структури не можуть бути прямо рекурсивними, тобто структура node не може містити компонент, що є структурою node, але будь-яка структура може мати компонент, що є покажчиком на свій тип, що і зроблено в наведеному прикладі.

Доступ до компонентів структури здійснюється за допомогою вказівки імені структури і через крапку імені потрібного компонента, наприклад:

st1.name="Іванов";

st2.id=st1.id;

st1_node.data=st1.age;

Тут за допомогою крапки (.) здійснено прямий вибір компонентів структур. Якщо доступ до елемента структури відбувається через вказівник, то після імені структури вказується стрілка (–>) і відбувається непрямий вибір компонентів структури, наприклад:

struct student *p1, *p2;

. . .

p1->name="Іванов";

p2->id=p1->id;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]