| INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO |

Introducción | Contenido | Bibliografía

Introducción
Contenido
UNIDAD I
UNIDAD II
UNIDAD III
UNIDAD IV
UNIDAD V
UNIDAD VI
UNIDAD VII Introducción 7.1 Diseño, implementación y administración de la tabla de símbolos 7.2 Implantación de bloques y tipos de datos 7.3 Especificación de alcance de variables

7.4 Funciones y procedimientos

7.5 Registros de activación

7.6 Paso de parámetros

7.7 Llamada por valor

7.8 Llamada por referencia

UNIDAD VIII
UNIDAD IX
PROBLEMARIO
Bibliografía

7.8 Llamada por Referencia

> Cuando los parámetros se pasan por referencia (conocida también como llamada por dirección o llamada por posición), el autor de la llamada pasa al procedimiento receptor de la llamada un apuntador a la dirección de memoria de cada parámetro actual.

> 1. Si un parámetro actual es un nombre o una expresión que tenga un valor de lado izquierdo, entonces se pasa ese mismo valor de lado izquierdo.

> 2. Sin embargo, si el parámetro actual es una expresión, como a + b o 2, que no tiene ningún valor de lado izquierdo, entonces la expresión se evalúen una nueva posición, y se pasa la dirección de dicha posición.

> Una referencia a un parámetro formal en el procedimiento llamado se convierte, en el código objeto, en una referencia indirecta a través del apuntador pasado al procedimiento llamado.

> Considérese el procedimiento permuta anteriormente descrito. Una llamada a permuta con parámetros reales i y a[i], es decir, permuta(i, a[i]), tendría el mismo efecto que la siguiente secuencia de pasos.

> 1. Cópiese las direcciones (valores de lado izquierdo) de i y a[i] dentro del registro de activación del procedimiento llamado, por ejemplo, en las posiciones arg1 y arg2 correspondientes a x e y, respectivamente.

> 2. Asígnese a temp el contenido de la posición apuntada por arg1 (es decir, iguálese temp a I0, donde I0 es el valor inicial de i). Este paso corresponde a temp := x en la línea 6 de la definición de permuta.

> 3. Asígnense los contenidos de la posición apuntada por arg1 al valor de la posición apuntada por arg2; es decir, i := a[I0]. Este paso corresponde a x := y en la línea 7 de permuta.

> 4. Asígnese al contenido de la posición apuntada por arg2 el valor de temp; es decir, hágase a[I0] := i. Este paso corresponde a y := temp.

> Varios lenguajes utilizan llamada por referencia; los parámetros var de Pascal se pasan de esta forma. Las matrices generalmente se pasan por referencia.

> Atrás Siguiente

##### Introducción / Contenido / Unidad I / Unidad II / Unidad III / Unidad IV / Unidad V / Unidad VI / Unidad VII / Unidad VIII / Unidad IX / Problemario / Bibliografía

##### Inicio

##### Créditos

José Sánchez Juárez, Andrés Ortigoza Campos, Fabiola Ocampo Botello