Lección 21: Punteros a funciones
No solo las variables viven en memoria — el código de las funciones también, así que las funciones también tienen direcciones. Un puntero a función guarda esa dirección: int (*op)(int, int); — y los paréntesis alrededor de (*op) son fundamentales; sin ellos es una declaración completamente distinta.
Un puntero a función es un botón de marcado rápido en un teléfono: el botón no puede hablar por sí mismo, solo guarda 'a quién llamar'. Puedes asignarlo a mamá o a la pizzería — presionarlo (llamarlo) alcanza a quien esté guardado ahí en ese momento.
- puntero a función
- Una variable que guarda la dirección de una función — puedes llamar a través de él y cambiar a qué apunta.
- anatomía de la declaración int (*op)(int, int);
- op es un puntero a una función que recibe dos int y devuelve int. Los paréntesis alrededor de (*op) son la parte fundamental.
- nombre de función como dirección
- El nombre de una función sin paréntesis (como add) es su dirección — por eso op = add; funciona.
- callback
- Una función pasada como puntero a otra función, para invocarse en el momento correcto.
- el comparador de qsort
- qsort recibe un puntero a una función de comparación — así puede ordenar cualquier tipo.