typestar

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

  1. int (*op)(int, int) es un puntero a una función así.
  2. El nombre solo alcanza; el ampersand es opcional.
  3. Una tabla de ellos reemplaza un switch largo.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 4 en Punteros genéricos y a funciones; paso 7 de 25 en Punteros y memoria.

← Anterior Siguiente →