#include<stdio.h> float suma(float, float); int main(int argc, char * argv[]) { float x, y, z; printf("Deme el valor de x: "); scanf("%f", &x); printf("Deme el valor de y: "); scanf("%f", &y); z = suma(x, y); z = suma(3.0*x, 4*y +25); return 0; } float suma(float a, float b) { float q; q = a + b; printf("%6.2f + %6.2f = %6.2f\n", a, b, q); return q; } /* Deme el valor de x: 4 Deme el valor de y: 5 4.00 + 5.00 = 9.00 12.00 + 45.00 = 57.00 */Este programa consta de dos funciones,
main()
y
suma()
. La función
suma()
tiene dos parámetros, que son de tipo
float
y se llaman
a
y
b
. El programa principal,
main()
, llama a
suma()
en dos ocasiones. En la primera llamada se proporcionan los parámetros
x
e
y
. En la segunda llamada, se proporcionan
3.0*x
y
4*y + 25
. Los parámetros que se adjuntan en la llamada a una función reciben el nombre de
parámetros reales
. Por tanto, en la primera llamada,
z = suma(x, y);los parámetros reales son
x
e
y
. En la segunda llamada,
z = suma(3.0*x, 4*y +25);los parámetros reales son
3.0x
y
4*y + 25
. Cuando se efectúa una llamada a una función, se evalúan las expresiones empleadas como parámetros reales y el resultado se copia en los parámetros formales correspondientes. A continuación, se ejecuta el código de la función. |
z = suma(x, y);las expresiones empleadas como parámetros reales son variables, y el resultado de evaluar una variable es su valor. Por tanto, el valor de
x
se copia en el parámetro formal correspondiente, que es
a
, y el valor de
y
se copia en el parámetro formal correspondiente, que es
b
. Esto es, al efectuar la llamada a la función es como si se ejecutase este código:
a = x; b = y;Después se ejecuta el código de la función, y por tanto se declara
q
, se almacena en
q
la suma de
a
y
b
, se imprimen resultados y finalmente se devuelve
q
como resultado de la función. El valor de
q
se asigna a
z
al volver a
main()
. z = suma(3.0*x, 4*y +25);se evalúa
3.0*x
y se evalúa
4*y +25
. El valor obtenido al calcular
3.0*x
(el parámetro real) se copia en el parámetro formal correspondiente, que es
a
. El valor obtenido al calcular
4*y +25
(el otro parámetro real) se copia en el parámetro formal correspondiente, que es
b
. Esto es, al efectuar la llamada a la función, es como si se ejecutase el código siguiente:
a = 3.0*x; b = 4*y +25;Después se ejecuta el código de la función, y por tanto se declara
q
, se almacena en
q
la suma de
a
y
b
, se imprimen resultados y finalmente se devuelve
q
como resultado de la función. El valor de
q
se asigna a
z
al volver a
main()
. Esta descripción del proceso que se sigue en la llamada a una función hace uso ciertos mecanismos internos, descritos por extenso en la sección
anterior
.