Vous êtes sur la page 1sur 6

[CURSO C++/LECCION 3.

2] IDSYSTEMS

Leccion 3.2 - Paso de argumentos

Llamada a una función

Una función se puede usar de dos formas.

• Invocándola normalmente:

escribiendo su nombre seguido de una lista de parámetros escritos entre paréntesis.

c = getchar ( );

m = raiz ( m );

s = menor ( lista, num );

peso = volumen ( a, b, c) * densidad (material);

• Tomando su dirección:

Cuando el nombre de una función aparece dentro de una expresión en un lugar que no es el
que le corresponde según el formato normal indicado antes, se genera un puntero a la
función. Esto permite pasar una función a otra.

main()

int f( ), g( );

...

...

g ( f );

...

1
[CURSO C++/LECCION 3.2] IDSYSTEMS

int g(funcion)

int (*funcion) ( );

...

(*funcion) ( );

...

Semántica de la llamada a una función

1. Se evalúa cada expresión de la lista de argumentos.

2. Al principio del cuerpo de la función, se asigna el valor de cada expresión a su parámetro


formal correspondiente.

3. Se ejecuta el cuerpo de la función.

4. Si se ejecuta una sentencia "return", el control regresa al medio que hizo la llamada.

5. Si la sentencia "return" incluye una expresión, el valor de la expresión se convierte (si es


necesario) al tipo de la función, y ese valor se devuelve al medio que hizo la llamada.

6. Si no hay una sentencia "return", el control regresa al medio que hizo la llamada cuando se
llega al final del cuerpo de la función.

7. Si se ejecuta una sentencia "return" que no tiene expresión o si no hay sentencia "return",
entonces no se devuelve ningún valor determinado al medio de llamada (el valor de retorno
queda indefinido).

8. Todos los argumentos pasan con una "llamada por valor".

2
[CURSO C++/LECCION 3.2] IDSYSTEMS

3
[CURSO C++/LECCION 3.2] IDSYSTEMS

La transmisión de valores. El paso por valor.

Al llamar a una función se le pueden pasar pasar valores por la lista de parámetros.

Los parámetros se pasan "por valor":

Se evalúan las expresiones de la lista de parámetros de paso y los valores resultantes se


asignan a sus parámetros formales correspondientes.

Las modificaciones en los valores de los parámetros formales de la función, no afectan a las
variables del medio que hizo la llamada. Si se quiere conseguir el efecto lateral de afectar a
las variables del medio de llamada, hay que inducir el paso por referencia, pasando
direcciones de variables en vez de sus valores:

Entonces, se usan los parámetros formales desreferenciados dentro de la función.

4
[CURSO C++/LECCION 3.2] IDSYSTEMS

Variables locales

Todas las variables declaradas en el cuerpo de una función son

"locales" a esa función:

Sólo existen durante la ejecución del bloque en el que se han declarado.

Variables globales

Las variables que no han sido declaradas ni como argumentos, ni en el cuerpo de una función
son "globales" a la función y deben estar definidas externamente:

5
[CURSO C++/LECCION 3.2] IDSYSTEMS

Existen durante la ejecución de todo el programa.

La variable "g" es conocida en todos los bloques.

Vous aimerez peut-être aussi