Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
08 void-функции.doc
Скачиваний:
9
Добавлен:
02.02.2015
Размер:
200.19 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

Національний технічний університет «Харківський політехнічний інститут»

Методичні вказівки

до лабораторної роботи «Функції типу void і вказівники як параметри функцій у програмах мовою C++»

з курсу «Програмування» для студентів напряму 6.040302 – Інформатика і курсу «Програмування та алгоритмічні мови» для студентів напряму 6.040303 – Системний аналіз

Затверджено редакційно-видавничою радою університету, протокол № 2від 01.12.12.

Харків НТУ «ХПІ» 2012

Методичні вказівки до лабораторної роботи «Функції типу voidі вказівники як параметри функцій у програмах мовоюC++» з курсу «Програмування» для студентів напряму 6.040302 – Інформатика і курсу «Програмування та алгоритмічні мови» для студентів напряму 6.040303 – Системний аналіз / Уклад. М. І. Безменов, О. М. Безменова. – Х. : НТУ «ХПІ», 2012. – 16с.

Укладачі: М. І. Безменов,

О. М. Безменова

Рецензент Л. М. Любчик

Кафедра системного аналізу і управління

© Безменов М.І., Безменова О. М., 2012

Вступ

У багатьох випадках виникають задачі, забезпечення впливу роботи функції на змінні поза нею без використання глобальних змінних. Одним з ме­тодів рішення цієї проблеми є використання вказівників як параметрів функцій.

Мета роботи– освоєння методики визначення та практичного засто­суванняvoid‑функцій у програмах, написаних мовоюC++, і викорис­тання вказівників для забезпечення зав’язку між функціями.

  1. Теоретичні основи

    1. Найпростіші процедури

Звичайні функції завжди повертають одне значення. Але існують й інші підзадачі, коли потрібно повернути з функції декілька значень або зовсім не по­вертати (наприклад, функція виведення вмісту двовимірного масиву у вигляді таблиці) нічого. У такому раз функція оформлюється як функція з типом void.

Опис void‑функції нічим особливим не відрізняється від опису функції, що повертає значення. По суті, існують тільки такі відмінності:

  • у заголовку вказується службове слово voidяк тип функції;

  • оператор returnне включається в текст функції або, у разі його наявності, після службового словаreturnне вказується ніякий вираз, за яким повинно обчислюватися значення, що повертається, оскільки ніяке таке значення не існує.

Якщо виклик функції, що повертає значення, може з’являтися в будь-якому виразі, то цього не можна сказати про void‑функцій. Виклик таких функцій здійснюється у вигляді окремого оператора.

Важливим моментом при використанні void‑функцій є застосування вказівників як їх формальних параметрів.

При звертанні до функцій за умовчанням, тобто у всіх випадках, коли не зазначено інший спосіб (а саме, не використані посилання1) здійснюється так званапередача фактичних пара­метрів по значенню– виконується обчис­лення значень фактичних параметрів, після чого вони записуються у відповідні формальні параметри. Як тільки починається виконання функції, жодні зміни значення формального параметра не впли­вають на значення відповідного фак­тич­ного параметра. Всередині тіла функції здій­снюється обробка формальних параметрів, які по закінченні роботи функції формальні параметри знищуються. Тому через формальні параметри передача значень з тіла функції в точку ви­клику неможлива.

Використанням вказівників як параметрів функцій забезпечу­ється опосе­редкована можливість змінювати об’єкти, що знаходяться поза функцією діями функції, що була викликана. Для цього у функцію за допомогою вказівника пе­редається адреса об’єкта, який визначений у тій функції, що забезпечила ви­клик. Всередині ж функції за допомогою розіменування вказівника забезпечу­ється доступ до цього об’єкта.

Приклад запису прототипу void‑функції з параметрами вказівниками:

voidFindMaxMin(intx, inty, int *max, int *min);

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

Наголосимо: усе, що звичайні функції, що повертають значення, також можуть мати параметри-вказівники.