Punteros a función en C
El nombre de una función es una dirección: se puede guardar, pasar y llamar.
static int add(int a, int b) {
return a + b;
}
static int multiply(int a, int b) {
return a * b;
}
int apply(int (*op)(int, int), int a, int b) {
return op(a, b);
}
int dispatch(int which, int a, int b) {
int (*table[2])(int, int) = {add, multiply};
if (which < 0 || which > 1) {
return 0;
}
return table[which](a, b);
}
Cómo funciona
int (*op)(int, int)es un puntero a una función así.- El nombre solo alcanza; el ampersand es opcional.
- Una tabla de ellos reemplaza un switch largo.
Palabras clave y builtins usados aquí
ifintreturnstatic
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 323
- Tokens
- 125
- Ritmo de tres estrellas
- 95 tpm
Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 79 segundos.
Paso 2 de 4 en Punteros genéricos y a funciones; paso 7 de 25 en Punteros y memoria.