МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
Національний технічний університет «Харківський політехнічний інститут»
Методичні вказівки
до лабораторної роботи «Функції типу void і вказівники як параметри функцій у програмах мовою C++»
з курсу «Програмування» для студентів напряму 6.040302 – Інформатика і курсу «Програмування та алгоритмічні мови» для студентів напряму 6.040303 – Системний аналіз
Затверджено редакційно-видавничою радою університету, протокол № 2від 01.12.12.
Харків НТУ «ХПІ» 2012
Методичні вказівки до лабораторної роботи «Функції типу voidі вказівники як параметри функцій у програмах мовоюC++» з курсу «Програмування» для студентів напряму 6.040302 – Інформатика і курсу «Програмування та алгоритмічні мови» для студентів напряму 6.040303 – Системний аналіз / Уклад. М. І. Безменов, О. М. Безменова. – Х. : НТУ «ХПІ», 2012. – 16с.
Укладачі: М. І. Безменов,
О. М. Безменова
Рецензент Л. М. Любчик
Кафедра системного аналізу і управління
© Безменов М.І., Безменова О. М., 2012
Вступ
У багатьох випадках виникають задачі, забезпечення впливу роботи функції на змінні поза нею без використання глобальних змінних. Одним з методів рішення цієї проблеми є використання вказівників як параметрів функцій.
Мета роботи– освоєння методики визначення та практичного застосуванняvoid‑функцій у програмах, написаних мовоюC++, і використання вказівників для забезпечення зав’язку між функціями.
Теоретичні основи
Найпростіші процедури
Звичайні функції завжди повертають одне значення. Але існують й інші підзадачі, коли потрібно повернути з функції декілька значень або зовсім не повертати (наприклад, функція виведення вмісту двовимірного масиву у вигляді таблиці) нічого. У такому раз функція оформлюється як функція з типом void.
Опис void‑функції нічим особливим не відрізняється від опису функції, що повертає значення. По суті, існують тільки такі відмінності:
у заголовку вказується службове слово voidяк тип функції;
оператор returnне включається в текст функції або, у разі його наявності, після службового словаreturnне вказується ніякий вираз, за яким повинно обчислюватися значення, що повертається, оскільки ніяке таке значення не існує.
Якщо виклик функції, що повертає значення, може з’являтися в будь-якому виразі, то цього не можна сказати про void‑функцій. Виклик таких функцій здійснюється у вигляді окремого оператора.
Важливим моментом при використанні void‑функцій є застосування вказівників як їх формальних параметрів.
При звертанні до функцій за умовчанням, тобто у всіх випадках, коли не зазначено інший спосіб (а саме, не використані посилання1) здійснюється так званапередача фактичних параметрів по значенню– виконується обчислення значень фактичних параметрів, після чого вони записуються у відповідні формальні параметри. Як тільки починається виконання функції, жодні зміни значення формального параметра не впливають на значення відповідного фактичного параметра. Всередині тіла функції здійснюється обробка формальних параметрів, які по закінченні роботи функції формальні параметри знищуються. Тому через формальні параметри передача значень з тіла функції в точку виклику неможлива.
Використанням вказівників як параметрів функцій забезпечується опосередкована можливість змінювати об’єкти, що знаходяться поза функцією діями функції, що була викликана. Для цього у функцію за допомогою вказівника передається адреса об’єкта, який визначений у тій функції, що забезпечила виклик. Всередині ж функції за допомогою розіменування вказівника забезпечується доступ до цього об’єкта.
Приклад запису прототипу void‑функції з параметрами вказівниками:
voidFindMaxMin(intx, inty, int *max, int *min);
Треба пам’ятати, що значенням вказівника можуть бути тільки об’єкти, що мають свою адресу у пам’яті. Тому замість формального параметра-вказівника можна підставляти тільки вираз, результатом якого є вказівник, тип якого той самий, що й тип формального параметра.
Наголосимо: усе, що звичайні функції, що повертають значення, також можуть мати параметри-вказівники.