Como ponteiro trabalha com endereço de memória, a linguagem C nos permite a
utilização do tipo ponteiro para referenciar nossas funções. Assim, podemos
invocar funções de forma dinâmica.
A sintaxe abaixo, apresenta a forma para declarar um ponteiro para uma função na linguagem C:
Sintaxe
tipo_retorno (*nome_ponteiro)( <lista_tipos_parametros> );
Onde
tipo_retorno: tipo de retorno da função
nome_ponteiro: nome da variável ponteiro
(*nome_ponteiro): indica que vamos utilizar um ponteiro para função
A atribuição de uma função a um ponteiro, é feita de forma semelhante a variáveis
de outros tipos de dados vistos. Utilizamos também o operador (&):
Sintaxe
nome_ponteiro = &nome_funcao;
A chamada ou invocação da função, via ponteiro, é feita seguindo a sintaxe a seguir:
Sintaxe
tipo_retorno nome_variavel = (*nome_ponteiro)( <lista_argumentos> ); //com retorno
(*nome_ponteiro)( <lista_argumentos> ); //sem retorno ou retorno descartado
No exemplo abaixo, declaramos uma função, funcao, sem retorno para exibir o valor de seu parâmetro. Declaramos
um ponteiro pnt_funcao e atribuímos funcao ao ponteiro. A chamada de funcao é feita passando o argumento
10.
Exemplo 1
#include <stdio.h>
void funcao(int valor)
{
printf("%d\n", valor);
}
int main()
{
void (*pnt_funcao)(int) = NULL; //declaração
pnt_funcao= &funcao; //atribuição
(*pnt_funcao)(10); //chamada;
return 0;
}
Saída
10