Loading AI tools
en informática, variable que contiene la dirección de otra variable De Wikipedia, la enciclopedia libre
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.
1. Funcionamiento de una referencia
int nOriginal = 5;
int& nReferencia = nOriginal; // Se crea un objeto de referencia // la referencia apunta al original //
nReferencia = 20; // se asigna a la referencia, y por consiguiente al original, el valor 20
int nCopia = nOriginal; // nCopia = 20
2. Ejemplo en el que se pasa un parámetro como referencia, conocido como Call by reference.
int cuadrar(int& valor) { // Definición de la función
valor = valor * valor;
return valor;
}
int main() {
int nNumero = 5;
cout << cuadrar(nNumero) << endl; // Llamada de la función - entonces nNumero == 25
return 0;
}
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
Bank& nBanco = DirectorioBancos::nachBLZ("76543210"); // se crea una referencia a un objeto de banco
Konto& nCuenta1 = nBanco.accesoCuenta("1234567"); // se crea un referencia a un objeto cuenta determinado
Konto& nCuenta2 = nBanco.accesoCuenta("1111111"); // se crea una referencia adicional a otro objeto cuenta
nCuenta1.alineacion(100.00, "EUR", nCuenta2); // Un método llama a nCuenta1
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.
1. Se pasa by reference (se cambia el valor de las variables que se han pasado):
function cuadra(var valor: integer): integer;
begin
valor := valor * valor;
cuadra:= valor;
end;
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):
function cuadrat(valor: integer): integer;
begin
Resultado := valor * valor;
end;
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.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.