Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Samostoyatelnye_po_S.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
672 Кб
Скачать
☆

Робота з структурами.

При оголошенні змінної їй можна присвоїти початкове значення, приєднуючи ініціатор до описувач. Ініціатор починається зі знака "=" і має такі форми.

Формат 1: = ініціатор;

Формат 2: = {список - ініціаторів};

Формат 1 використовується при ініціалізації змінних основних типів і покажчиків, а формат 2 - при ініціалізації складових об'єктів.

Приклади:

char tol = 'N';

Змінна tol ініціалізується символом 'N'.

const long megabute = (1024 * 1024);

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

static int b [2] [2] = {1,2,3,4};

Ініціалізація структур

Ініціалізується двомірний масив b цілих величин елементів масиву привласнюються значення зі списку. Ця ж ініціалізація може бути виконана таким чином:

static int b [2] [2] = {{1,2}, {3,4}};

При ініціалізації масиву можна опустити одну або декілька размерностей

static int b [3 [] = {{1,2}, {3,4}};

Якщо при ініціалізації вказано менше значень для рядків, то решта елементи инициализируются 0, тобто при описі

static int b [2] [2] = {{1,2}, {3}};

елементи першого рядка отримають значення 1 і 2, а другий 3 і 0.

При ініціалізації складових об'єктів, потрібно уважно стежити за використанням дужок і списків ініціалізаторів.

Приклади:

struct complex {double real;

double imag;} comp [2] [3] =

{{{1,1}, {2,3}, {4,5}},

{{6,7}, {8,9}, {10,11}}};

У даному прикладі ініціалізується масив структур comp з двох рядків і трьох стовпців, де кожна структура складається з двох елементів real і imag.

struct complex comp2 [2] [3] =

{{1,1}, {2,3}, {4,5}, {6,7}, {8,9}, {10,11}};

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

- Перша ліва фігурна дужка - початок складеного ініціатора для масиву comp2;

- Друга ліва фігурна дужка - початок ініціалізації першого рядка масиву comp2 [0]. Значення 1,1 присвоюються двом елементам першої структури;

- Перша права дужка (після 1) вказує компілятору, що список ініціаторів для рядка масиву закінчено, і елементи залишилися структур в рядку comp [0] автоматично ініціалізувалися нулем;

- Аналогічно список {2,3} ініціалізує першу структуру в рядку comp [1], а що залишилися структури масиву звертаються в нулі;

- На наступний список ініціалізаторів {4,5} компілятор буде повідомляти про можливу помилку так як рядок 3 в масиві comp2 відсутня.

При ініціалізації об'єднання задається значення першого елемента об'єднання відповідно до його типом.

Приклад:

union tab {unsigned char name [10];

int tab1;

} Pers = {'A', 'H', 'T', 'O', 'H'};

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

Ініціалізацію масиву символів можна виконати шляхом використання строкового літерала.

char stroka [] = "привіт";

Ініціалізується масив символів з 7 елементів, останнім елементом (сьомим) буде символ '\ 0', яким завершуються всі рядкові літерали.

У тому випадку, якщо задається розмір масиву, а строковий літерал довший, ніж розмір масиву, то зайві символи відкидаються.

Наступне оголошення ініціалізує змінну stroka як масив, що складається з семи елементів.

char stroka [5] = "привіт";

У змінну stroka потрапляють перші п'ять елементів літерала, а символи 'Т' і '\ 0' відкидаються.

Якщо рядок коротший, ніж розмір масиву, то решта елементи масиву заповнюються нулями.

Відзначимо, що ініціалізація змінної типу tab може мати наступний вигляд:

union tab pers1 = "Антон";

і, таким чином, в символьний масив потраплять символи:

'А', 'Н', 'Т', 'О', 'Н', '\ 0',

а інші елементи будуть ініціалізований нулем.

Питання для контролю:

1.Що таке структура?

2. Який ініціалізувати масив символів?

3.Як працювати зі структурою?

Література:

1.Шилдт Г.: Пер. с англ. –М.: Издательский дом “Вильямс”, 2002. –704с. –стор 181-183

Урок №18

(згідно робочої навчальної програми)

Тема: Ініціалізація об'єднань, об'єднання з ознаками, структури з бітовими полями, масиви структур

Питання:

1.Робота з обєднаннями

2.Визначення об'єктів та типів

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