UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

Capítulo 4. Las funciones en C

El código de un programa escrito en C se divide en funciones. Aunque similares a los métodos de Java, las funciones no están asignadas ni a una clase ni a un objeto. Una función en C se distingue sólo por su nombre. Dos funciones con igual nombre y con diferente número y tipo de parámetros se considera una definición múltiple, y por tanto un error.

Las funciones suelen encapsular una operación más o menos compleja de la que se deriva un resultado. Para ejecutar esta operación, las funciones pueden precisar la invocación de otras funciones (o incluso de ellas mismas como es el caso de las funciones recursivas).

Las funciones en un programa son entidades que dado un conjunto de datos (los parámetros), se les encarga realizar una tarea muy concreta y se espera hasta obtener el resultado. Lo idóneo es dividir tareas complejas en porciones más simples que se implementan como funciones. La división y agrupación de tareas en funciones es uno de los aspectos más importantes en el diseño de un programa.

4.1. Definición de funciones

Las funciones en C tienen el siguiente formato:

tipo_del_resultado NOMBRE(tipo_param1 param1, tipo_param2 param2, ... ) 
{
    /* Cuerpo de la función */
}

Cuando se invoca una función se asignan valores a sus parámetros y comienza a ejecutar el cuerpo hasta que se llega al final o se encuentra la instrucción return. Si la función devuelve un resultado, esta instrucción debe ir seguida del dato a devolver. Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int search(int table[], int size) 
{
    int i, j;
    if (size == 0) 
    {
        return 0;
    }
    j = 0;
    for (i = 0; i < size; i++) 
    {
        j += table[i];
    }
    return j;
}

La ejecución de la función comienza en la línea 4. Si el parámetro size tiene valor cero, la función termina y devuelve el valor cero. Si no, se ejecuta el bucle y se devuelve el valor de la variable j. El tipo de la expresión que acompaña a la instrucción return debe coincidir con el tipo del resultado declarado en la línea 1.

La llamada a una función se codifica con su nombre seguido de los valores de los parámetros separados por comas y rodeados por paréntesis. Si la función devuelve un resultado, la llamada se reemplaza por su resultado en la expresión en la que se incluye. Por ejemplo:

1
2
3
4
5
6
7
8
9
int addition(int a, int b) 
{
    return (a + b);
}
int main() 
{
    int c;
    c = c * addition(12, 32);
}