Předpoklady:
Ukazatele jsou symbolické reprezentace adres. Umožňují programům simulovat volání po referenci a také vytvářet a manipulovat s dynamickými datovými strukturami. Iterace přes prvky v polích nebo jiných datových strukturách je jedním z hlavních použití ukazatelů.
Adresa proměnné, se kterou pracujete, je přiřazena proměnné ukazatele, která ukazuje na stejný datový typ (jako je int nebo řetězec).
Syntax :
datatype *var_name;>
Adresa funkce: Všichni víme, že kód každé funkce je uložen v paměti, takže každá funkce má adresu jako všechny ostatní proměnné v programu. Název funkce lze použít k nalezení adresy funkce. Adresu funkce můžeme získat pouhým zapsáním názvu funkce bez závorek do funkce.
Více o tom najdete v článku – adresa funkce .
Funkční ukazatel v C++
- Ukazatel funkce se používá k bodování funkcí, podobně ukazatele slouží k bodování proměnných.
- Používá se k uložení adresy funkce.
- Ukazatel funkce se buď používá k volání funkce, nebo může být odeslán jako argument jiné funkci.

Funkční ukazatel v C++
Syntax :
return_type (*FuncPtr) (parameter type, ....);>
Odkazování a dereferencování funkčního ukazatele v C++
Podobně jako u ukazatele používaného u proměnných provádíme odkazování a dereferencování pomocí ukazatele funkce.
Odkazování: Když je ukazateli přidělena adresa funkce, která s ním má být spojena, pak se tento proces nazývá odkazování.
Dereferencování: Když použijeme operátor (*) k získání hodnoty uložené v ukazateli.
Syntax:
// Declaring return_type (*FuncPtr) (parameter type, ....); // Referencing FuncPtr= function_name; // Dereferencing data_type x=*FuncPtr;>
Ukazatel funkce používaný k volání funkce
V tomto vidíme, jak ukazujeme ukazatel na funkci a voláme ji pomocí tohoto ukazatele. Je to efektivní způsob použití
Příklad:
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;> }> |
>
stav git
>Výstup
The value of the product is: 30>
Ve výše uvedeném programu deklarujeme funkci násobit, kde násobíme dva prvky a a b, a pak vracíme výsledek. Ale místo přímého volání funkce používáme ukazatel funkce prod, který za nás dělá stejnou práci.
Předání ukazatele funkce jako parametru
Při deklaraci ukazatele funkce uložíme paměťovou adresu funkce, ale když chceme předat návratovou hodnotu další funkci. K provedení tohoto úkolu máme dvě metody. Nejprve buď předejte hodnotu, kterou jsme získali, nebo podruhé předejte ukazatel funkce, který již existuje.
Příklad:
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;> }> |
>
>Výstup
The value of the product is: 30>
Časová složitost: O(1).
Pomocný prostor: O(1).
Ve výše uvedeném programu deklarujeme funkci násobení, ve které násobíme 2 proměnné a a b. Ukazatel funkce předáváme jako parametr ve funkci print, zde ukazatel funkce používáme k výpočtu hodnoty z funkce násobení a poté tuto hodnotu ve funkci print.