AD

¿Ya dominas lo básico? Un curso estructurado de C es la vía rápida para dar el salto.

Ver cursos de C en Udemy

Enlace de afiliado. No te cuesta nada extra.

🔧Lecciones de C
Lección 29 / 68

Funciones de orden superior (pasar un puntero a función)

En esta lección pasarás una función como argumento de otra función.

En C se hace con un puntero a función. Su declaración es incómoda de leer: int (*op)(int, int) significa «puntero a función que toma dos enteros y devuelve un entero». Los paréntesis alrededor de *op son imprescindibles.

El código de ejemplo aplica una operación recibida como argumento a un par de valores.

La sintaxis mejora mucho con typedef: typedef int (*Operacion)(int, int); permite escribir después simplemente Operacion op. Es lo que se hace en código real, porque la forma cruda se vuelve ilegible en cuanto la función devuelve otro puntero.

Aunque parezca un rincón exótico, es la base de cosas muy usadas: qsort() recibe así el criterio de comparación, y los sistemas de callbacks y las tablas de despacho de los controladores del núcleo de Linux son exactamente este mecanismo.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar C directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)