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.
Abaixo, a forma para declarar um ponteiro para um função:
Sintaxe
tipo_retorno (*nome_ponteiro)( <lista_tipos_parametros> );
Onde
tipo_retorno: tipo de retorno da função
nome_ponteiro: nome da variável 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 utilizando da seguinte forma:
Sintaxe
nome_variavel = (*nome_ponteiro)( <lista_argumentos> ); //com retorno
(*nome_ponteiro)( <lista_argumentos> ); //sem retorno ou retorno descartado
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