C · Intermediário · Português · Técnico
ponteiro de função
Ponteiro que guarda o endereço de uma função, permitindo chamá-la indiretamente. Em C é a base de callbacks, tabelas de despacho e comparadores como o do qsort.
Onde usar
A sintaxe int (*f)(int, int) confunde no começo, então se costuma criar um typedef. Aparece em APIs que recebem comportamento como argumento.
Em código
int dobro(int x) { return 2 * x; }
int aplica(int (*f)(int), int v) {
return f(v);
}
// aplica(dobro, 4) devolve 8Exemplos
O qsort recebe um ponteiro de função para comparar os elementos.
Criei um typedef para o ponteiro de função ficar legível.
Cuidado
Esquecer os parênteses em volta do asterisco: int *f(int) declara uma função que devolve ponteiro, não um ponteiro de função.
Sinônimos
callback