Referencia (informática)
# Referencia (informática)

Una referencia, en términos informáticos, es un indicativo hacia un objeto. Al igual que el puntero, una referencia es un alias para una entidad, en otras palabras, una variable cualitativa que contiene la dirección de otra variable cualitativa. En contraposición en los punteros explícitos, la dirección no se puede alterar y está oculta. Por ello, operaciones con la dirección (conocido como aritmética de punteros), a menudo fuente de errores, no son posibles. Las referencias se utilizan para pasar parámetros, cuando por medio de una subrutina, los valores de un objeto se han de cambiar de forma continua.

En el lenguaje de programación Java se distingue entre referencias fuertes y blandas. Dado que en este caso los objetos no se eliminan de forma explícita para devolver la memoria disponible, de esta tarea se encarga el recolector de basura de forma implícita. Un objeto que no se ha referenciado de forma fuerte, puede ser eliminado por el recolector de basura, incluso aunque tenga referencias blandas. Las referencias blandas son, por ejemplo, para la implementación de un búfer de datos.

## Ejemplo en C++

1. Funcionamiento de una referencia

2. Ejemplo en el que se pasa un parámetro como referencia, conocido como Call by reference.

Se trabaja con las variables originales, independientemente de si el nombre de la variable en la función es idéntico con el nombre de las variables que se llaman.

3. Ejemplo de referencias de objetos

Las referencias nBanco, nCuenta1 y nCuenta2 referencian a un objeto distinto. El símbolo & describe estas variables como referencias para el lenguaje de programación.

## Ejemplo en Pascal

1. Se pasa by reference (se cambia el valor de las variables que se han pasado):

A esta rutina solo se le puede pasar una variable, ninguna expresión. 'valor' es el nombre local de las variables que se pasan como referencia; con la asignación de un valor se cambia de forma directa el contenido de las variables pasadas.

2. Se pasa by value (es decir, sólo el valor, no la propia variable; el valor de la variable pasada no se cambia):

Incluso aunque se diear una asignación a 'valor', ésta no cambiaría el contenido de una variable pasada: sólo se pasa el valor; el descriptor 'valor' es una variable local, que sólo es válida dentro de la función.

