Prerequisiti:
I puntatori sono rappresentazioni simboliche degli indirizzi. Consentono ai programmi di simulare call-by-reference nonché di creare e manipolare strutture di dati dinamiche. L'iterazione sugli elementi negli array o in altre strutture dati è uno degli usi principali dei puntatori.
L'indirizzo della variabile con cui stai lavorando è assegnato alla variabile puntatore che punta allo stesso tipo di dati (come un int o una stringa).
Sintassi :
datatype *var_name;>
Indirizzo della funzione: Sappiamo tutti che il codice di ogni funzione risiede in memoria, quindi ogni funzione ha un indirizzo come tutte le altre variabili nel programma. Il nome di una funzione può essere utilizzato per trovare l'indirizzo della funzione. Possiamo ottenere l'indirizzo di una funzione semplicemente scrivendo il nome della funzione senza parentesi nella funzione.
Per saperne di più fare riferimento all'articolo – indirizzo della funzione.
Puntatore a funzione in C++
- Il puntatore a funzione viene utilizzato per puntare le funzioni, analogamente, i puntatori vengono utilizzati per puntare le variabili.
- Viene utilizzato per salvare l'indirizzo di una funzione.
- Il puntatore alla funzione viene utilizzato per chiamare la funzione oppure può essere inviato come argomento a un'altra funzione.

Puntatore a funzione in C++
Sintassi :
return_type (*FuncPtr) (parameter type, ....);>
Referenziamento e dereferenziamento del puntatore a funzione in C++
Similmente al puntatore utilizzato con le variabili, eseguiamo il riferimento e il dereferenziamento con un puntatore a funzione.
numeri abc
Riferimenti: Quando al puntatore viene assegnato l'indirizzo della funzione da associare ad esso, questo processo viene definito riferimento.
Dereferenziazione: Quando utilizziamo l'operatore (*) per ottenere il valore memorizzato nel puntatore.
Sintassi:
// Declaring return_type (*FuncPtr) (parameter type, ....); // Referencing FuncPtr= function_name; // Dereferencing data_type x=*FuncPtr;>
Puntatore a funzione utilizzato per chiamare la funzione
In questo, vediamo come puntiamo un puntatore a una funzione e la chiamiamo utilizzando quel puntatore. È un modo efficiente da usare
Esempio:
C++
ddl vs dml
// 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;> }> |
>
>Produzione
The value of the product is: 30>
Nel programma precedente, stiamo dichiarando una funzione moltiplicazione in cui stiamo moltiplicando due elementi a e b, quindi restituendo il risultato. Ma, invece di chiamare direttamente la funzione, stiamo usando un puntatore a funzione che fa lo stesso lavoro per noi.
metodo Java uguale
Passaggio di un puntatore a funzione come parametro
Quando si dichiara un puntatore a funzione per memorizzare l'indirizzo di memoria della funzione ma, quando vogliamo passare il valore restituito alla funzione successiva. Abbiamo due metodi per eseguire questa attività. Per prima cosa, passiamo il valore ottenuto oppure passiamo successivamente il puntatore a funzione che già esiste.
Esempio:
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;> }> |
ricerca lineare in Java
>
>Produzione
The value of the product is: 30>
Complessità temporale: O(1).
Spazio ausiliario: O(1).
Nel programma sopra, stiamo dichiarando una funzione di moltiplicazione in cui moltiplichiamo 2 variabili a e b. Stiamo passando il puntatore alla funzione come parametro nella funzione di stampa, qui utilizziamo il puntatore alla funzione per calcolare il valore dalla funzione di moltiplicazione e quindi quel valore nella funzione di stampa.