- •Елементи мови с.Основні символи
- •Ключові слова
- •Ідентифікатори
- •Константи
- •Лексеми
- •Коментарі
- •Умовні оператори. Логічні вирази
- •Форми оператора if
- •Оператор вибору switch
- •Перерахування типів
- •Перетворення типів
- •Оператори циклу
- •Оператор while
- •Оператор for
- •Оператор do-while
- •Оператори переходу
- •Cтруктури
- •Об'єднання (суміші)
- •Робота з структурами.
- •Ініціалізація структур
- •Робота з обєднаннями
- •Визначення об'єктів та типів
- •Методи доступу до елементів масивів
- •Покажчики на багатовимірні масиви
- •Операції з вказівниками
- •Робота з покажчиками.
- •Покажчики на структуру
- •Масиви структур
- •Динамічне розміщення масивів
- •Робота з динамічними масивами
- •Робота з непрямою адресацією
- •Робота з покажчиками як параметрами функцій
- •Використання вказівників
- •Операції з вказівниками
- •Використання вказівників в програмі
- •Робота з файлами
- •Відкриття файлу
- •Обробка відкритого файлу
- •Перевірка ознаки кінця файлу
- •Закриття файлу
- •Функції введення-виведення
- •Робота з текстовими файлами
- •Функція форматованого виведення printf ()
- •Основні формати
- •Модифікації форматів
- •Функція форматованого введення scanf ()
- •Робота функції scanf ()
- •Призначеня функцій бібліотеки введення-виведення
- •Макрокоманди
- •Потокові інтерфейси введення-виведення
- •Ближні покажчики (near)
- •Дальні покажчики (far)
- •Покажчики huge
- •Функції для роботи з рядками
- •Динамічні рядки, клас string
- •Визначення поточної робочої директорії
- •Визначення поточного каталогу диска
- •Визначення / встановленн поточного диска
- •Пошук файлу
- •Створення, видалення, зміна директорій
- •Приклад програми для роботи з директоріями
- •Перегляд каталогу диска
- •Параметри структури ffblk
- •Робота з клавіатурою
- •Робота з файлами
- •Послідовний доступ до елементів двійкових файлів
- •Організація довільного доступу до елементів двійкових файлів
- •Робота динамічних структур даних.
- •Функції управління пам'яттю
- •Атрибути файлів.
- •Параметри
- •Динамічні структури даніх
- •Лінійні списки
- •Стек. Загальні поняття.
- •Приклад використання стеку
- •Основні визначення
- •Приклад використання дерев
Робота з структурами.
При оголошенні змінної їй можна присвоїти початкове значення, приєднуючи ініціатор до описувач. Ініціатор починається зі знака "=" і має такі форми.
Формат 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.Визначення об'єктів та типів
