ExpertiDict

C · Intermediário · Português · Técnico

ponteiro de função

/põˈtej.ɾu dʒi fũˈsɐ̃w/substantivo

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 8

Exemplos

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

Veja também

Todos os termos de C