- •Елементи мови с.Основні символи
- •Ключові слова
- •Ідентифікатори
- •Константи
- •Лексеми
- •Коментарі
- •Умовні оператори. Логічні вирази
- •Форми оператора if
- •Оператор вибору switch
- •Перерахування типів
- •Перетворення типів
- •Оператори циклу
- •Оператор while
- •Оператор for
- •Оператор do-while
- •Оператори переходу
- •Cтруктури
- •Об'єднання (суміші)
- •Робота з структурами.
- •Ініціалізація структур
- •Робота з обєднаннями
- •Визначення об'єктів та типів
- •Методи доступу до елементів масивів
- •Покажчики на багатовимірні масиви
- •Операції з вказівниками
- •Робота з покажчиками.
- •Покажчики на структуру
- •Масиви структур
- •Динамічне розміщення масивів
- •Робота з динамічними масивами
- •Робота з непрямою адресацією
- •Робота з покажчиками як параметрами функцій
- •Використання вказівників
- •Операції з вказівниками
- •Використання вказівників в програмі
- •Робота з файлами
- •Відкриття файлу
- •Обробка відкритого файлу
- •Перевірка ознаки кінця файлу
- •Закриття файлу
- •Функції введення-виведення
- •Робота з текстовими файлами
- •Функція форматованого виведення printf ()
- •Основні формати
- •Модифікації форматів
- •Функція форматованого введення scanf ()
- •Робота функції scanf ()
- •Призначеня функцій бібліотеки введення-виведення
- •Макрокоманди
- •Потокові інтерфейси введення-виведення
- •Ближні покажчики (near)
- •Дальні покажчики (far)
- •Покажчики huge
- •Функції для роботи з рядками
- •Динамічні рядки, клас string
- •Визначення поточної робочої директорії
- •Визначення поточного каталогу диска
- •Визначення / встановленн поточного диска
- •Пошук файлу
- •Створення, видалення, зміна директорій
- •Приклад програми для роботи з директоріями
- •Перегляд каталогу диска
- •Параметри структури ffblk
- •Робота з клавіатурою
- •Робота з файлами
- •Послідовний доступ до елементів двійкових файлів
- •Організація довільного доступу до елементів двійкових файлів
- •Робота динамічних структур даних.
- •Функції управління пам'яттю
- •Атрибути файлів.
- •Параметри
- •Динамічні структури даніх
- •Лінійні списки
- •Стек. Загальні поняття.
- •Приклад використання стеку
- •Основні визначення
- •Приклад використання дерев
Робота з покажчиками як параметрами функцій
Покажчики як аргументи звичайно використовуються у функціях, що повинні повертати більш одного значення. (Можна сказати, що swap повертає два значення, нові значення її аргументів). Як приклад розглянемо функцію getint, що здійснює перетворення даних, що надходять у вільному форматі, розділяючи потік символів на цілі значення, по одному цілому за одне звертання.
Функція getint повинна повертати або знайдене значення, або ознака кінця файлу, якщо вхідні дані цілком вичерпані. Ці значення повинні повертатися як окремі об'єкти, яке б значення ні використовувалося для EOF, навіть якщо це значення цілого, що вводиться. Наступний цикл заповнює масив цілими за допомогою звертань до функції getint:
int n, v, array[size];
for (n = 0; n < size && getint(&v) != EOF; n++)
array[n] = v;
У результаті кожного звертання v стає рівним наступному цілому значенню, знайденому у вхідних даних. Зверніть увагу, що як аргумент getint необхідно вказати &v а не v. Використання просте v швидше за все приведе до помилки адресації, оскільки getint думає, що вона працює саме з покажчиком.
Сама getint є очевидною модифікацією написаної нами раніше функції atoi:
getint(pn) /* get next integer from input */
int *pn;
{
int c,sign;
while ((c = getch()) == ' ' || c == '\n'
|| c == '\t'); /* skip white space */
sign = 1;
if (c == '+' || c == '-') { /* record sign */
sign = (c == '+') ? 1 : -1;
c = getch();
}
for (*pn = 0; c >= '0' && c <= '9'; c = getch())
*pn = 10 * *pn + c - '0';
*pn *= sign;
if (c != EOF)
ungetch(c);
return(c);
}
Вираз *pn використовується всюди в getint як звичайна змінна типу int. Ми також використовували функції getch і ungetch, так що один зайвий символ, який приходиться зчитувати, може бути поміщений назад у введення.
Питання для контролю:
1. В якому випадку покажчики використовуться як аргументи функцій?
2. Що таке аргумент функції?
3.Як здійснється робота з покажчиками, які передаться як параметри функції?
Література:
1.Шилдт Г.: Пер. с англ. –М.: Издательский дом “Вильямс”, 2002. –704с. –стор 142-144
Урок №32
(згідно робочої навчальної програми)
Тема: Покажчики як результати роботи функції, покажчики на функції
Питання:
1.Використання вказівників
2.Операції з вказівниками
Використання вказівників
Вказівники - це змінні, що використовуються для збереження адреси. Унарна операція & повертає адресу, по якій зберігається змінна. Якщо х - це змінна, то &х - її адреса. Адресу можна представити у вигляді комірки пам'яті. У персональному комп'ютері адреси представляються у шістнадцятирічному вигляді. Наприклад:
printf("%d %p \n", pooh, &pooh); Оголошення вказівників
int * pi;
char * рс;
float *pf, *pq;
Операції з вказівниками
Існує п'ять основних операцій, що можна виконувати по відношенню до змінних вказівників:
1 . присвоювання - вказівнику можна присвоїти адресу, завдяки оператору &;
2. Знаходження значення. Оператор * видає значення, що зберігається у вказаній комірці;
3. отримання адреси вказівника;
4. збільшення вказівника на 1. Збільшення вказівника на значення елементу масиву заставляє його зміститися до наступного елементу масиву. Наприклад, ptr++ збільшує числове значення ptraa чотири (чотири байта для значень типу int) і призводить до того, що він вказує на елемент масиву
5. Віднімання. Можливо обчислювати різницю між двома вказівниками. Звичайно, ця операція використовується для двох вказівників на елементи одного й того самого масиву для виявлення відстані між елементам
Питання для контролю:
1. Що таке вказівник?
2. Де можна застосувати вказівники?
3. Які є операції з вказівниками?
Література:
1.Шилдт Г.: Пер. с англ. –М.: Издательский дом “Вильямс”, 2002. –704с. –стор 142-144
Урок №35
(згідно робочої навчальної програми)
Тема: Використання покажчиків
Питання:
1.Використання вказівників в програмі
