Introdução
Um ponteiro para uma função é uma forma de armazenar o endereço de memória de uma função, assim como uma variável armazena o endereço de memória de um valor. Quando uma função é chamada através de um ponteiro, ela é chamada de ponteiro para uma função.
Neste laboratório, escreveremos um programa em C para demonstrar como usar um ponteiro para uma função.
Declarar e definir a função a ser apontada
Nesta etapa, declararemos e definiremos uma função que recebe dois argumentos inteiros e não retorna nada.
#include<stdio.h>
void func(int a, int b)
{
printf("\n\n a = %d \n", a);
printf("\n\n b = %d \n", b);
}
Declarar um ponteiro para uma função
Nesta etapa, declararemos um ponteiro para a função criada na etapa 1. A sintaxe para declarar um ponteiro para uma função é semelhante à de declarar um ponteiro para uma variável, mas especifica os tipos de parâmetros e o tipo de retorno da função para a qual se está apontando.
// function pointer
void (*fptr)(int , int);
Armazenar o endereço da função no ponteiro
Nesta etapa, armazenaremos o endereço da função criada na etapa 1 no ponteiro criado na etapa 2.
// assign address to function pointer
fptr = func;
Chamar a função usando o ponteiro
Nesta etapa, chamaremos a função que criamos na etapa 1 usando o ponteiro para a função criado na etapa 2.
// function calling
func(2,3);
fptr(2,3); // calling a function referring to pointer to a function
Escrever o código completo
Abra o arquivo main.c no diretório ~/project/.
#include<stdio.h>
void func(int a, int b)
{
printf("\n\n a = %d \n", a);
printf("\n\n b = %d \n", b);
}
int main()
{
printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
// function pointer
void (*fptr)(int , int);
// assign address to function pointer
fptr = func;
// function calling
func(2,3);
fptr(2,3); // calling a function referring to pointer to a function
printf("\n\n\t\t\tCoding is Fun !\n\n\n");
return 0;
}
Compilar e executar o código
Para compilar o código, abra o terminal e digite o seguinte comando:
gcc main.c -o main
Para executar o programa, digite o seguinte comando:
./main
Resumo
Neste laboratório, aprendemos como usar um ponteiro para uma função em um programa C. Vimos como declarar e definir a função a ser apontada, como declarar um ponteiro para uma função, como armazenar o endereço da função no ponteiro e como chamar a função usando o ponteiro. O uso de ponteiros para uma função pode tornar programas complexos mais fáceis de escrever e entender.



