Perché usare puntatori alle funzioni?

March 31

In C e C ++ e altri linguaggi che permettono l'accesso diretto alla memoria del computer, un puntatore è un particolare tipo di valore che contiene un indirizzo di memoria, invece di dati direttamente specificati. puntatori a funzione indicano le funzioni in memoria, invece di valori. puntatori a funzione possono essere utilizzati per eseguire le tecniche di programmazione in stile funzionale declarative- o in C o C ++, lingue che sono in gran parte imperativo. Per inciso, le sollecitazioni di programmazione dichiarativa in stile dire al computer quello che c'è qualcosa che non, mentre la programmazione imperativa in stile sottolinea dire al computer come fare qualcosa.

Dati Directed Programmazione

puntatori funzione possono essere utilizzati per implementare dati Directed programmazione, che è una forma di programmazione generica. In parole povere, programmazione generica consente funzioni di elaborare valori di tipo arbitrario. C e C ++ funzioni di default può solo le funzioni di processo di tipo precedentemente dichiarato. Per esempio, una funzione "funzione int (int formaggio, palla char)" deve restituire un intero e richiede solo un intero e un carattere. puntatori a funzione può essere utilizzato per inviare in modo dinamico sui tipi di argomenti.

Processing Style segnale di programmazione

puntatori a funzione possono essere utilizzati per implementare le funzioni di elaborazione del segnale di stile come la mappa e ridurre. Si tratta di funzioni che richiedono una funzione specificata dall'utente e li applicano a ciascun elemento in una lista.

Programmazione di ordine superiore

Programmazione di ordine superiore è un'altra forma di programmazione che permette di incapsulare "modelli" comuni a ciò che è noto come una funzione di ordine superiore. puntatori a funzione possono essere utilizzati per generare funzioni di ordine superiore.

Altre tecniche dichiarative

puntatori a funzione può essere utilizzato per implementare molte altre tecniche di programmazione dichiarativa. Come altro esempio, currying può essere implementato utilizzando puntatori a funzione. Il processo di rifinizione è definito come prendere una funzione precedentemente definita e restituendo una nuova funzione che è la vecchia funzione con alcuni dei suoi argomenti applicate.