Next: 12. Librerías Up: Índice Previous: 10.8 Sentencia goto
11. Funciones
El lenguaje C sólo permite funciones, no hay procedimientos. La forma de declarar las funciones es la siguiente:tipo nombre(tipo parámetro_1, ... tipo parámetro_N) sentencia
Donde tipo es el tipo del dato que devuelve la función, que si no aparece se supone siempre int, y nombre es el identificador de la función.
La forma de invocar a una función es la misma que en Pascal, pero aunque la función no tenga parámetros se deben colocar los paréntesis. Por otra parte, es lícito no realizar ninguna acción con el resultado que devuelve una función, pero en ese caso debiera ponerse un type cast (void) delante de la invocación de la función:(void)printf("\n");
Las listas de parámetros formales y de parámetros actuales no tienen por qué coincidir en número, e incluso en tipo. Si hay más parámetros formales que actuales se les asigna un valor indefinido a los formales; si ocurre al revés se descartan los parámetros actuales que sobren. Para evitar este problema se puede declarar el prototipo de la función antes de invocarla. La forma de escribir el prototipo de una función es la siguiente:
tipo nombre(tipo parámetro_1, ... tipo parámetro_N);
O sea, la cabecera de la función acabada en punto y coma. Es análoga una declaración.
Como se comentó anteriormente sólo existe paso por valor.
Para terminar la ejecución de una función se usa la sentencia return. Su sintaxis es:return [expresión];
Donde la expresión es el valor que retorna la función. Debe ser del mismo tipo que el de la función.
void funcion1(int a); /* Prototipo de la función */
void funcion2(void); /* Prototipo de la función *//* trozo de programa */
void funcion1(int a) { /* Función 1 */
/* Cuerpo de la función */
funcion2();
}void funcion2(void) { /* Función 2 */
/* Cuerpo de la función */
funcion1(2);
}
Figura 23 Funciones
Next: 12. Librerías Up: Índice Previous: 10.8 Sentencia goto
Última modificación: 26/4/1999
Copyright © 1999, F. de Sande - Centro Superior de Informática, Universidad de La Laguna.
All rights reserved.