Escolar Documentos
Profissional Documentos
Cultura Documentos
Existen dos formas de pasar argumentos a las funciones: por valor y por referencia. El
primero es utilizado por defecto con la declaración usual de parámetros. En el paso "por
valor", se crean copias de los argumentos pasados a la función, los cuales, junto a las
variables locales (incluyendo el posible valor devuelto), y la dirección de vuelta a la
rutina que efectúa la invocación, son pasados a la pila en la secuencia de llamada. Más
tarde, cuando termina su ejecución definitivamente, es decir, cuando el control vuelve a
la función que la invocó, toda esta información es sacada de la pila mediante la
secuencia de retorno (y se pierde). Estos procesos suponen un consumo de tiempo y
espacio (memoria), a veces considerable.
Cuando los argumentos pasan por valor pero no hay concordancia entre el tipo de los
argumentos actuales y los argumentos formales utilizados en la declaración de la
función, entonces se produce un modelado de tipo antes de la asignación. Supongamos
el ejemplo:
Lo que sucede en estos casos es que la copia local f en func(x) es modificada para
hacerla coincidir con el tipo esperado por la función, mientras que el valor original (f)
permanece inalterado.
Las referencias presentan las ventajas de los punteros, en el sentido que permiten
modificar los valores de los objetos pasados como argumento, y de que permiten
ahorrar espacio si hay que pasar objetos muy grandes, pero no presentan los peligros
potenciales de aquellos. En caso necesario las referencias pueden declararse constantes,
indicando así que la función invocada no modificará estos valores. En estos casos, la
utilización de referencias obedece casi exclusivamente a razones de eficacia en el
mecanismo de llamada.