Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФУНКЦІЇ ЗДАВАТИ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
611.33 Кб
Скачать

11.9.4. Масиви вказівників на функцію

Такі масиви є ще одним поширеним застосуванням вказівників на функції. Син­таксична конструкція, що оголошує масив вказівників на функції, повинна мати таку

форму:

тип_значенпя^функції (* ім'я_масиву [кількістьje/іементів] ) (список

типів ^параметрів_функції) ;

Як і у випадку оголошення функцій, шо повертають вказівник на функцію, дане оголошення потребує внутрішніх круглих дужок, щоб операція ' - "вказівник" інтер­претувались перед операцією () - "функція".

Наступне оголошення створює масив вказівників на функції: double (*farray[8])(double);

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

Якщо в оголошенні масиву використати задекларований вище тип FUNC, то воно станс значно лаконічнішим:

FUNC * farray[8];

Масиви вказівників нз функції опрацьовуються так само, як і звичайні масиви: їх можна інІціалізувати адресами відповідних функцій, до їхніх елементів можна звертатись через індекси, або через вказівники тощо. Наприклад, якщо виконати присвоєння

farray[0J - funl; farray[1] ■ £un2;

а потім обчислити значення наступного виразу і присвоїти його змінній vf If 2: double vflf2;

vf lf2 - (AverFunValuetO, 2, farrayf 0] ) + AverFunValue(0, 2, farray [1] ) ) 12;

то результат присвоєння дорівнюватиме півсумі середніх значень функцій funl ( ) та f un2 ( ) на проміжку [0, 2].

Основним застосуванням масивів вказівників на функції є створення користувацьких меню та організація т. зв. таблиць переходів (Jump-labiés). Щоб створити масив вказів­ників на функції, всі розділи меню або виконавчі блоки таблиць переходів оформляють як однотипні функції, тобто функції з однаковим списком параметрів і однаковим типом значення, яке вони повертають. Адреси виконавчих функцій присвоюють елементам масиву вказівників. У процесі роботи програми кожен вибір пункту меню чи перехід до іншого виконавчого блоку перетворюються у номер відповідної функції в масиві вказівників. Відбувається звертання до вибраної функції за її адресою і виконуються дії, встановлені для цієї функції. Така організація вибору потрібної функції вкрай проста -фактично це вибір елемента з масиву вказівників - і дає змогу уникнути громіздких розгалужень, які довелось би реалізовувати через багаторазові звертання до умовного оператора чи через використання оператора switch.

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

^«**************«***#**********»**************/

/• Приклад організації користувацького меню */ у*****»*.******#********************* *»*****••/

#include <stdio.h> •include <conio.h>

typedef void ACTION {void * pred); /* тип Функцій меню */

ACTION Iteml; /* прототипи функцій */

ACTION Item2;

ACTION Item3;

ACTION Exitltem;