Покажчик на функцію в C++
Передумови:
Покажчики є символічними представленнями адрес. Вони дозволяють програмам імітувати виклик за посиланням, а також створювати динамічні структури даних і керувати ними. Ітерація елементів у масивах або інших структурах даних є одним із основних видів використання покажчиків.
Адреса змінної, з якою ви працюєте, призначається змінній-вказівнику, яка вказує на той самий тип даних (наприклад, int або string).
Синтаксис :
datatype *var_name;
Адреса функції: Ми всі знаємо, що код кожної функції зберігається в пам’яті, тому кожна функція має адресу, як і всі інші змінні в програмі. За назвою функції можна знайти адресу функції. Ми можемо отримати адресу функції, просто написавши назву функції без дужок у функції.
Щоб дізнатися більше про це, зверніться до статті – адреса функції.
Покажчик на функцію в C++
- Покажчик на функцію використовується для вказування на функції, так само покажчики використовуються для вказування на змінні.
- Він використовується для збереження адреси функції.
- Покажчик на функцію або використовується для виклику функції, або його можна надіслати як аргумент до іншої функції.
Покажчик на функцію в C++
Синтаксис :
return_type (*FuncPtr) (parameter type, ....);
Посилання та розіменування покажчика функції в C++
Подібно до покажчика, який використовується зі змінними, ми виконуємо посилання та розіменування за допомогою покажчика функції.
Посилання: Коли покажчику призначається адреса функції, яка буде з ним асоційована, цей процес називається посиланням.
Розіменування: Коли ми використовуємо оператор (*), щоб отримати значення, що зберігається в покажчику.
Синтаксис:
// Declaring return_type (*FuncPtr) (parameter type, ....); // Referencing FuncPtr= function_name; // Dereferencing data_type x=*FuncPtr;
Покажчик на функцію, який використовується для виклику функції
Тут ми бачимо, як ми вказуємо вказівник на функцію та викликаємо її за допомогою цього вказівника. Це ефективний спосіб використання
приклад:
C++
// C++ program to implementation> // Function Pointer> #include> using> namespace> std;> int> multiply(> int> a,> int> b) {> return> a * b; }> int> main()> {> > int> (*func)(> int> ,> int> );> > // func is pointing to the multiplyTwoValues function> > func = multiply;> > int> prod = func(15, 2);> > cout < <> 'The value of the product is: '> < < prod < < endl;> > return> 0;> }> |
Вихід
The value of the product is: 30
У наведеній вище програмі ми оголошуємо функцію multiply, де ми множимо два елементи a і b, а потім повертаємо результат. Але замість безпосереднього виклику функції ми використовуємо вказівник на функцію prod, який виконує ту саму роботу за нас.
Передача покажчика функції як параметра
При оголошенні вказівника на функцію для збереження адреси пам’яті функції, але коли ми хочемо передати значення, що повертається, наступній функції. У нас є два способи виконання цього завдання. По-перше, або передайте отримане значення, або по-друге, передайте вказівник на функцію, який уже існує.
приклад:
C++
// C++ Program for demonstrating> // function pointer as pointer> #include> using> namespace> std;> const> int> a = 15;> const> int> b = 2;> // Function for Multiplication> int> multiply() {> return> a * b; }> // Function containing function pointer> // as parameter> void> print(> int> (*funcptr)())> {> > cout < <> 'The value of the product is: '> < < funcptr()> > < < endl;> }> // Driver Function> int> main()> {> > print(multiply);> > return> 0;> }> |
Вихід
The value of the product is: 30
Часова складність: O(1).
Допоміжні приміщення: O(1).
У наведеній вище програмі ми оголошуємо функцію множення, у якій множимо 2 змінні a і b. Ми передаємо вказівник на функцію як параметр у функції друку, тут ми використовуємо вказівник на функцію, щоб обчислити значення з функції множення, а потім це значення у функції друку.