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, temos o recurso de invocar funções dinamicamente.
Abaixo, a forma para declarar um ponteiro para um função:
Sintaxe
tipo_retorno (*nome_ponteiro)(tipos_parametros);
Onde
tipo_retorno: tipo de retorno da função.
nome_funcao: nome da função desejada.
*(): 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 um ponteiro da seguinte forma:
Sintaxe
nome_variavel = (*nome_ponteiro)(lista_argumentos); //Retorno
(*nome_ponteiro)(lista_argumentos);
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