In C e C + + e altri linguaggi che consentono 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 dichiarativa - o funzionali in stile in C o C + + , le lingue che sono in gran parte imperativo. Per inciso, la programmazione dichiarativa stile sottolinea dire al computer quello che è qualcosa , mentre la programmazione imperativa in stile enfatizza dire al computer come fare qualcosa . Dati direzionati Programmazione
puntatori a funzione possono essere utilizzati per implementare i dati Regia di programmazione, che è una forma di programmazione generica . In parole povere , programmazione generica consente funzioni di elaborare valori di tipi arbitrari . C e C + + le funzioni di default possono elaborare solo le funzioni del tipo precedentemente dichiarati . Ad esempio, una funzione "int funzione (int formaggio , palla char) " deve restituire un numero intero e richiede solo un intero e un carattere. Puntatori a funzione possono essere utilizzati per spedire in modo dinamico sui tipi di argomenti.
Signal Processing stile di programmazione
puntatori a funzione possono essere utilizzati per implementare le funzioni di stile di elaborazione del segnale , come mappa e ridurre . Si tratta di funzioni che assumono una funzione specificata dall'utente e li applicano a ogni elemento in un elenco .
Higher Order Programmazione
programmazione di ordine superiore è un'altra forma di programmazione che permette di incapsulare "pattern " comuni a ciò che è noto come una funzione di ordine superiore . Puntatori a funzione possono essere usati per generare funzioni di ordine superiore .
Altri dichiarative Tecniche
puntatori a funzione può essere utilizzata per implementare molte altre tecniche di programmazione dichiarativa . Come altro esempio , currying può essere implementato utilizzando puntatori a funzione . Il processo di accattivarsi è definito come prendere una funzione definita in precedenza e il ritorno di una nuova funzione che è la vecchia funzione con alcuni dei suoi argomenti applicati .