![Uilian Ries Uilian Ries](//static.vivaolinux.com.br/imagens/fotos/31747477cd018.jpg)
uilianries
(usa Linux Mint)
Enviado em 12/09/2014 - 08:41h
Claro, segue:
#include <stdio.h>
struct foo {
int value;
void (*bar) (int * value);
} ;
void get_value (int * value) {
printf ("Digite um valor: ");
scanf ("%d", value);
}
int main () {
struct foo f;
f.value = 0;
printf ("Valor (antes): %d\n", f.value);
f.bar= get_value;
f.bar(&f.value);
printf ("Valor (depois): %d\n", f.value);
return 0;
}
Perceba que a struct foo guarda uma assinatura de ponteiro de função (bar), que recebe um ponteiro de inteiro;
Seguido temos a função get_value, que trabalha com esta mesma assinatura. Ela recebe um valor pelo stdin e guarda na referência do parametro passado
No main passamos a referência dessa função para dentro da estruta, dessa maneira temos, "uma estruta com função"