Головна » Статті » С++ » Функції в С++

Вказівники на функції С++
Як Вам, надіюсь, відомо, вказівник - це змінна, яка містить адресу певного об'єкта в оперативній пам'яті. Цим об'єктом може бути змінна, структура або клас. А може бути і функція.
Виявляється, функція в С++ також займає певну оперативну пам'ять, яка, в свою чергу, має свою адресу. От вона може бути використана для звернення до функції, що в ній "розміщена". Для цього можна оголосити вказівник.
Як виглядає оголошення вказівника на функцію? В загальному, так:
<тип> (*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)), але це роблять для того, щоб вказати, що р - це все-таки вказівник, а не функція).
Ось така от річ, ці вказівники на функції. Надіюсь, інформація буде для Вас корисною.
Категорія: Функції в С++ | Додав: Lord_Adwond (17-06-2018) | Автор: Lord_Adwond
Переглядів: 451 | Теги: вказівник, c++, вказівник на функцію, функції, вказівники, Модель террориста New Style Leet дл | Рейтинг: 0.0/0
Всього коментарів: 0
avatar