Cada programa en C es una colección de funciones. Descubra todo sobre estos útiles fragmentos de código reutilizables, desde cómo definirlos hasta qué significa vacío.

Es posible que haya cubierto la sintaxis básica de C, con ejemplos simples, y ahora se pregunte cómo crear programas más grandes del mundo real. Para empezar, querrás organizar tu código en partes eficientes, con un mínimo de repetición. En C, como en la mayoría de los lenguajes, la respuesta a tus problemas es la función.

Crear y utilizar funciones en C es sencillo y aporta muchos beneficios. Las funciones le permiten dividir programas complejos en partes más pequeñas. Proporcionan reutilización, tanto dentro de su programa original como en bibliotecas relacionadas u otros programas separados.

Para comenzar, necesitarás aprender sobre declaraciones de funciones, prototipos, parámetros y declaraciones de retorno.

¿Qué son las funciones en C?

En programación C, una función es una sección de código con nombre que hace algo cuando usted se lo pide. Ayuda a mantener su código organizado y le permite utilizar la misma acción varias veces sin repetirla.

instagram viewer

El ejemplo más simple es uno que ya ha estado usando: la función main(). La función principal es particularmente especial porque actúa como el punto de entrada principal para cualquier programa en C. También puedes usar funciones de biblioteca, que son aquellas que otra persona ya ha escrito, o puedes escribir tus propias funciones definidas por el usuario.

Funciones: declarar, definir y llamar

Estos tres aspectos son fundamentales para el uso de funciones.

Declaración de función

Esto proporciona información sobre el nombre, el tipo de retorno y los parámetros de una función, lo que permite su uso antes de su definición completa. También se le llama prototipo de función. Sigue esta sintaxis simple:

return_type function_name(parameters);

Dónde:

  • tipo_retorno es el tipo de datos del valor que devuelve la función. Puede ser cualquier tipo de datos C válido o vacío si la función no devuelve un valor.
  • nombre de la función es el nombre que le das a la función. Usarás esto para llamar a la función más adelante.
  • parámetros es una lista de parámetros de entrada que la función acepta, si corresponde. Cada parámetro consta de un tipo de datos seguido de un nombre de parámetro separado por comas.

Por ejemplo, aquí hay una declaración de función simple:

intadd(int a, int b);

Definición de función

Cuando llamas a una función, ejecuta el código especificado en su definición. Incluye el nombre de la función, el tipo de retorno, la lista de parámetros y las declaraciones que definen su comportamiento. Aquí está la sintaxis:

return_type function_name(parameters){
// Function body - code that defines what the function does
// Return a value if applicable
return value;
}

Analicemos partes de la sintaxis:

cuerpo funcional: Este es el bloque de código encerrado entre llaves {}. Contiene las instrucciones que definen lo que hace la función cuando se llama.

Declaración de devolución: Si la función tiene un tipo de retorno distinto a vacío, el devolver La declaración envía un valor a la persona que llama. Este valor debe coincidir con el tipo de devolución especificado.

Aquí hay un ejemplo simple de una definición de función:

intadd(int a, int b){
int sum = a + b;
return sum;
}

Llamada de función

Al igual que en la cocina, es posible que tengas una receta (definición de función) y algunos ingredientes (argumentos), pero aun así debes seguir las instrucciones para obtener un resultado. Una llamada a función ejecutará la función con los argumentos dados; aquí está la sintaxis:

return_type result = function_name(arguments);

argumentos: Estos son los valores o expresiones que pasas a la función como entradas. Separe cada argumento con una coma. El número, el orden y los tipos de datos de los argumentos deben coincidir con la lista de parámetros de la función.

resultado: Si la función tiene un tipo de retorno distinto a vacío, puede capturar el valor devuelto utilizando una variable del tipo de datos apropiado.

A continuación se muestra un ejemplo de una llamada a función:

#include

// Function prototype
intadd(int a, int b);

intmain(){
int x = 5, y = 3;

// Call the function and store the result in 'sum'
int sum = add(x, y);
printf("The sum of %d and %d is %d\n", x, y, sum);
return0;
}

// Function definition
intadd(int a, int b){
return a + b;
}

Siguiendo estos tres pasos: declarar la función, proporcionar su implementación y llamarla con argumentos apropiados: puede usar funciones de manera efectiva para realizar diversas tareas en su programa.

Parámetros de función y valores de retorno

Los parámetros son variables declaradas en la declaración o definición de la función que actúan como marcadores de posición para los valores pasados ​​a la función cuando se llama. Le permiten pasar datos a la función, permitiéndole trabajar con esos datos y manipularlos. Los valores de retorno son los valores que una función produce y envía a la persona que llama.

Hay dos métodos para pasar parámetros.

Pasar por valor

Con este enfoque, una llamada a función copia el valor del argumento real en el parámetro de la función. Los cambios realizados al parámetro dentro de la función no afectan el argumento original.

Por ejemplo:

#include

intsquare(int num){
num = num * num;
return num;
}

intmain(){
int x = 5;
int y = square(x);

// Output: x and y after function call: 5 25
printf("x and y after function call: %d %d\n", x, y);

return0;
}

  • La función cuadrado toma un parámetro entero, número.
  • La función cuadrado calcula el cuadrado de num, actualiza su valor y devuelve este nuevo valor.
  • La función principal declara una variable entera, Xy le asigna el valor 5.
  • Luego llama a la función cuadrado y le pasa el valor de x. Asigna el resultado a una segunda variable, y.
  • Después de la llamada a la función, main imprime los valores de xey. El valor de x sigue siendo el mismo porque cambiar el parámetro num dentro del cuadrado no afecta el x original.

Pasar por referencia

Con este enfoque, pasa la dirección de memoria (puntero) de un valor a una función. Los cambios realizados en el parámetro dentro de la función afectan el valor original fuera de ella.

Los punteros, incluido su uso como parámetros, son uno de los aspectos de C que lo diferencian de un lenguaje como Python.

#include

voidsquare(int *num){
*num = *num * *num;
}

intmain(){
int x = 5;
square(&x);

// Output: x after function call: 25
printf("x after function call: %d\n", x);
return0;
}

  • El cuadrado La función toma un puntero entero (En t *) parámetro, número. No devuelve un valor.
  • La función cuadrado calcula el cuadrado del valor que número contiene y actualiza ese valor utilizando el operador de desreferencia del puntero, *.
  • El principal la función declara una variable entera, Xy le asigna el valor 5.
  • Luego llama al cuadrado función con un puntero a X usando la dirección del operador: &X.
  • Después de la llamada a la función, main imprime el valor de X, que es ahora 25 desde los cambios en *número dentro de cuadrado La función afecta al original. X.

En resumen, la diferencia clave entre los dos métodos es cómo los cambios en el parámetro dentro de la función afectan el valor original fuera de ella. Pasar por valor crea una copia, mientras que pasar por referencia (puntero) permite la manipulación directa del valor original.

Otros lenguajes suelen tener un equivalente de los punteros de C, pero generalmente funcionan en un nivel superior. Un ejemplo es Soporte de C# para nuestras variables.

Funciones nulas

Las funciones nulas en la programación C son funciones que no devuelven un valor. Úselos para realizar acciones o tareas sin producir ningún resultado. Pueden cambiar sus parámetros usando pasar por referencia, pero no es necesario.

A continuación se muestra un ejemplo de una función nula:

#include

// Void function with no parameters
voidgreet(){
printf("Hello, MUO!");
}

intmain(){
// Call the void function, output: "Hello, MUO!"
greet();

return0;
}

Las funciones nulas son útiles para realizar acciones, imprimir mensajes, modificar datos o realizar tareas sin requerir un valor de retorno.

Explorar funciones en programación C

Practicar mediante la creación de funciones mejora su comprensión y aplicación en la programación en C. Además, mejora la legibilidad del código y la facilidad de mantenimiento. Sumérgete en diversas aplicaciones de funciones para desbloquear sus ventajas.

Cuando haya dominado los fundamentos de las funciones de C y quiera desafiarse a sí mismo, considere profundizar en la recursividad.