C es un lenguaje simplificado. Te da el metal desnudo. Ni siquiera incluye funciones para leer desde un teclado o escribir en una pantalla. Si quieres eso, tienes que construirlo.

Todo lo que va más allá de lo básico se encuentra en bibliotecas.

Conoces la biblioteca stdio. Maneja entrada y salida estándar. Hay otros para matemáticas. Manejo de cuerdas. Manipulación del tiempo. Existen para que no tengas que reinventar la rueda cada vez que inicias un nuevo proyecto.

Pero ¿por qué limitarse a lo que establece la norma?

Poner código en bibliotecas lo hace reutilizable. Le permite dividir programas masivos en módulos manejables. Más fácil de probar. Más fácil de depurar. Puede extraer código de sus proyectos antiguos y colocarlo en otros nuevos sin copiar y pegar bloques de lógica.

Veamos cómo hacer esto.

Extrayendo lógica en funciones

Tome un programa C estándar que llene una matriz con números aleatorios y los ordene. Aquí está el código sin formato:

Este código hace tres cosas. Llena una matriz con números aleatorios. Los clasifica mediante una clasificación de burbujas. Imprime el resultado.

Para crear una biblioteca reutilizable, necesitamos aislar la lógica de clasificación.

Paso uno: generalizar el tipo

Extraiga el código de clasificación de burbujas. Conviértelo en una función.

Dado que la matriz a y la constante MAX son globales, la función no necesita parámetros inicialmente. Tampoco es necesario devolver un valor. Simplemente use variables locales para x, y y t.

Ahora actualice main para llamar a esta función en lugar de ejecutar el bucle en línea.

Funciona. Pero todavía está ligado a una matriz global.

Paso dos: pasar la matriz

Podemos hacer que la función de clasificación sea verdaderamente genérica. Pase la propia matriz como parámetro.

La firma cambia a:

Esto le dice al compilador que acepte una matriz de números enteros de cualquier tamaño. El cuerpo de la función permanece exactamente igual. Simplemente actualiza la llamada en principal :

¿Notas algo extraño? Pasamos “a”, no “&a”.

Aunque la función de clasificación modifica la matriz, aquí no necesitamos el operador de dirección. Parece contradictorio si está acostumbrado a pasar por lenguajes de valor. Quizás se pregunte por qué esto funciona sin punteros explícitos en la llamada.

Esto se debe a que en C, las matrices se descomponen en punteros cuando se pasan a funciones. La función recibe una referencia al inicio de la matriz en la memoria. Por eso puede modificar los datos originales.

Comprender esta distinción es la puerta de entrada para dominar los consejos. Sin él, las bibliotecas C son solo bloques de código estáticos. Con él, estará construyendo sistemas modulares y portátiles.