Головна » Статті » С++ » Функції в С++ |
Вказівники на функції С++
Як Вам, надіюсь, відомо, вказівник - це змінна, яка містить адресу певного об'єкта в оперативній пам'яті. Цим об'єктом може бути змінна, структура або клас. А може бути і функція.
Виявляється, функція в С++ також займає певну оперативну пам'ять, яка, в свою чергу, має свою адресу. От вона може бути використана для звернення до функції, що в ній "розміщена". Для цього можна оголосити вказівник. Як виглядає оголошення вказівника на функцію? В загальному, так: <тип> (*name)(<список параметрів>);
де тип - тип функції, на яку вказує вказівник, name - його ім'я, список параметрів - це параметри фукнції.
Зверніть увагу на те, що ім'я вказівника функції при оголощенні вказується в дужках. Вище наведений синтаксис однозначно оприділяє тип функцій, на які може вказувати визначник. Для прикладу, наступна інструкція оголошує визначник, який може вказувати на функції типу double і з двома параметрами такого ж типу (лише на такі і не на які інші!): double (*p)(double, double);
З оголошенням, надіюсь, розібрались. Тепер вияснимо, яким чином передається вказівник на функцію.
Як Ви знаєте, функція має ім'я та список параметрів, який завжди пишеться після нього в круглих дужках. Отримання її аналогічне отриманню вказівника на першие елемент масиву - відкидаються дужки з параметрами. Давайте розберемо щойно сказане на прикладі. Приклад: double func1(int a, double b) //функція { ... } ... int main() { double (*p)(int, double); //вказівник на функцію int x; double y; p=func1; //передаємо вказівнику р адресу функції func1 //тепер ми можемо звертатися до цієї функції ... cout << (*p)(x, y); //звертаємося до функції func1 через вказівник //і передаємо їй значення змінних х та у ... } Як можна побачити з прикладу, ми оголошуємо вказівник на функцію р, передаємо йому адресу функції func1 і вже можемо визивати її не по імені, а через вказівник на неї (варто відмітити, що вказівник р, в загальному випадку, необов'язково виділяти дужками (тобто можна було записати просто p(x, y)), але це роблять для того, щоб вказати, що р - це все-таки вказівник, а не функція). Ось така от річ, ці вказівники на функції. Надіюсь, інформація буде для Вас корисною. | |
Переглядів: 451 | | |
Всього коментарів: 0 | |