Dominando funciones en C: Estructura, declaración y mejores prácticas
Una función es un grupo de sentencias que realizan una tarea. Todo programa C tiene al menos una función: main(), y los programas más triviales pueden definir funciones adicionales.
Puedes dividir tu código en funciones separadas. La división lógica es que cada función realice una tarea específica.
Una declaración de función informa al compilador sobre nombre, tipo de retorno y parámetros. Una definición proporciona el cuerpo real.
La biblioteca estándar de C proporciona numerosas funciones integradas: strcat() para concatenar cadenas, memcpy() para copiar memoria, entre muchas.
Una función también puede llamarse método, subrutina o procedimiento.
Definiendo una función
Forma general de definición de función en C:
tipo_retorno nombre_funcion(lista_parámetros) {
cuerpo de la función
}
Una definición consta de encabezado de función y cuerpo de función. Partes de una función:
Tipo de Retorno – Tipo de dato del valor que la función devuelve. Si no devuelve valor, se usa void.
Nombre de Función – Nombre real. Junto con la lista de parámetros constituye la firma.
Parámetros – Marcadores de posición. Al invocar, pasas un valor al parámetro (argumento real). La lista refiere al tipo, orden y número de parámetros. Son opcionales.
Cuerpo de Función – Colección de sentencias que definen qué hace la función.
Ejemplo
Código fuente para función max() que toma dos parámetros y devuelve el máximo:
/ * función que retorna el máximo entre dos números * /
int max(int num1, int num2) {
/ * declaración variable local * /
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
Declaraciones de función
Informa al compilador sobre nombre y cómo llamar. El cuerpo puede definirse aparte.
tipo_retorno nombre_funcion(lista_parámetros);
Para max():
int max(int num1, int num2);
Los nombres de parámetros no importan en la declaración, solo sus tipos; esto también es válido:
int max(int, int);
La declaración es necesaria cuando defines una función en un archivo fuente y la llamas en otro. Declara la función al inicio del archivo que la llama.
Llamando a una función
Al crear una función, defines qué debe hacer. Para usarla, la llamas para realizar la tarea.
Cuando un programa llama a una función, el control pasa a la función llamada. Esta realiza la tarea y al ejecutar return o alcanzar la llave de cierre, devuelve el control al programa principal.
Para llamar, pasa parámetros requeridos junto con el nombre; si devuelve valor, puedes almacenarlo. Ejemplo:
Demo en vivo#include <stdio.h>
/* declaración de función */
int max(int num1, int num2);
int main() {
/* definición variables locales */
int a = 100;
int b = 200;
int ret;
/* llamada a función para obtener valor máximo */
ret = max(a, b);
printf("Valor máximo es: %d\n", ret);
return 0;
}
/* función que retorna el máximo entre dos números */
int max(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
Resultado al ejecutar:
Valor máximo es: 200
Argumentos de función
Si una función usa argumentos, debe declarar variables que acepten los valores (parámetros formales). Se comportan como variables locales: creadas al entrar, destruidas al salir.
Dos formas de pasar argumentos:
| Nº | Tipo de Llamada y Descripción |
|---|---|
| 1 | Llamada por valor: copia el valor real del argumento en el parámetro formal. Cambios dentro de la función no afectan al argumento. |
| 2 | Llamada por referencia: copia la dirección del argumento en el parámetro formal. Dentro de la función, la dirección accede al argumento real; cambios afectan al argumento. |
Por defecto, C usa llamada por valor. En general, el código dentro de una función no puede alterar los argumentos usados para llamarla.
Lenguaje C
- Cuatro patrones probados para funciones definidas por el usuario en C
- Cómo pasar arrays 1D y 2D a funciones en C – Guía práctica
- Dominando funciones de la biblioteca estándar de C: Guía práctica
- Uso eficiente de memoria con campos de bits en C
- Dominando E/S de archivos en C: Crear, abrir y gestionar archivos
- Dominando Argumentos Variables en C: Guía Práctica
- Entendiendo el Polimorfismo en C++: Guía Práctica
- Métodos en C#: Definición, llamada y uso de funciones
- Dominar las funciones en Verilog para diseño RTL eficiente
- Funciones en MATLAB: Definición, Workspace, Entradas y Salidas
- Dominando las funciones lambda en Python: ejemplos prácticos y mejores prácticas