#include<stdio.h>
void f1(int a) {
}
void f2(int a) {
}
void f3(int a) {
}
int main() {
void (*fun_ptr)(int);
fun_ptr = &f1;
(*fun_ptr)(10);
fun_ptr = &f2;
(*fun_ptr)(100);
fun_ptr = f3;
(*fun_ptr)(1000);
}
Si es posible, es un apuntador a una funcion, y sirve para cambiar la referencua de una funcion a otra sin alterar el codigo, esto podria ser hecho dinamicamente en tiempo de ejecucion, solo he visto implementado a nivel de kernel.
Por ejemplo en lo que he visto para lo modulos de FreeBSD los archivo device
/dev/random /dev/null, /dev/zero
Son archivos que puede ser usado desde fopen para lectura y escritura.
Entonces cuando tu programas el modulo, le dices al sistema operativo cual es tu funcion de lectura, cual es la funcion de escritura. Entonces al momento de cargarlos el sistema tiene algo como
moduloX.read = ....
moduloX.write = ....
moduloX.close = ....
moduloX.open = ....
Entonces cada que se le mande a abrir, cerrar, leer o escribir en el archivo el sistema ejecutara las funciones que tu especifiques despues del =