Fundamentos de Funciones en C: Ámbito, Llamada y Retorno
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 3,58 KB
Aunque ya se ha dicho anteriormente, recordamos que todas las funciones en C, sin excepción alguna, están en el mismo nivel de ámbito, es decir, no se puede declarar ninguna función dentro de otra función, y no se puede definir una función como bloque interno en el cuerpo de otra función.
Llamada a la Función
La llamada a una función es una sentencia habitual en C. Ya la hemos usado con frecuencia, invocando hasta el momento únicamente funciones de biblioteca. Pero la forma de invocar es la misma para cualquier función.
La sintaxis general es:
nombre_función([argumento1][, …, argumentoN]);
La sentencia de llamada está formada por el nombre de la función y sus argumentos (los valores que se le pasan) que deben ir recogidos en el mismo orden que la secuencia de parámetros del prototipo y entre paréntesis. Si la función no recibe parámetros (porque así esté definida), entonces se colocan después de su nombre los paréntesis de apertura y cierre sin ninguna información entre ellos. Si no se colocan los paréntesis, se produce un error de compilación.
El paso de parámetros en la llamada exige una asignación para cada parámetro. El valor del primer argumento introducido en la llamada a la función queda asignado en la variable del primer parámetro formal de la función; el segundo valor de argumento queda asignado en el segundo parámetro formal de la función; y así sucesivamente. Hay que asegurar que el tipo de dato de los parámetros formales es compatible en cada caso con el tipo de dato usado en la lista de argumentos en la llamada de la función. El compilador de C no dará error si se fuerzan cambios de tipo de dato incompatibles, pero el resultado será totalmente inesperado.
La lista de argumentos estará formada por nombres de variables que recogen los valores que se desean pasar, o por literales. No es necesario (ni es lo habitual) que los identificadores de los argumentos que se pasan a la función cuando es llamada coincidan con los identificadores de los parámetros formales.
Las llamadas a las funciones, dentro de cualquier función, pueden realizarse en el orden que sea necesario, y tantas veces como se quiera, independientemente del orden en que hayan sido declaradas o definidas. Incluso se da el caso, bastante frecuente como veremos más adelante, que una función pueda llamarse a sí misma (recursividad).
Si la función debe devolver un valor, con cierta frecuencia interesará que la función que la invoca almacene ese valor en una variable local suya. En ese caso, la llamada a la función será de la forma:
variable = nombre_función([argumento1][, …, argumentoN]);
Aunque eso no siempre es necesario, y también con frecuencia encontraremos las llamadas a las funciones como partes de una expresión.
La Sentencia Return
Hay dos formas ordinarias de terminar la ejecución de una función:
- Llegar a la última sentencia del cuerpo, antes de la llave que cierra el bloque de esa función.
- Llegar a una sentencia
return
. La sentenciareturn
fuerza la salida de la función, y devuelve el control del programa a la función que la llamó, en la sentencia inmediatamente posterior a la de la llamada a la función.