Enlace (programación)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 17 de octubre de 2019; las comprobaciones requieren 14 ediciones .

Una referencia en programación  es un objeto que apunta a ciertos datos pero no los almacena. Obtener un objeto por referencia se denomina desreferenciación .

Una referencia no es un puntero , sino simplemente otro nombre para un objeto. La principal diferencia entre una referencia y los punteros es que un puntero es un número entero y, por lo tanto, las operaciones con números enteros están disponibles para él, mientras que solo las operaciones de copia y eliminación de referencia están disponibles para una referencia.

En los lenguajes de programación, una referencia se puede implementar como una variable que contiene la dirección de una ubicación de memoria . Algunos lenguajes de alto nivel también tienen la capacidad de usar referencias a objetos al pasar objetos hacia y desde una subrutina.

Ejemplos de implementación de enlaces

C++

Las referencias en C++ deben estar asociadas con algún objeto. Por lo tanto, no hay "referencias nulas" (no asociadas con ningún objeto) en C++. Desreferenciar referencias en C++ no requiere un operador especial. Por lo tanto, en C++, las referencias  son una forma de pasar una dirección directamente a la pila, evitando la copia y los punteros. Al compilar, todas las referencias a un objeto y su nombre se reemplazan por un solo número de este objeto.

En el siguiente ejemplo, el parámetro x se pasa por valor y el resultado se pasa por referencia. El resultado de la función se coloca en resultado:

#incluir <iostream> utilizando el espacio de nombres estándar ; // sin esta entrada, tendríamos que agregar "std::" a cout y endl cuadrado vacío ( int x , int y resultado ) { resultado = x * x ; } int principal () { int y = 0 ; //Inicializar cuadrado ( 3 , y ); cout << "y=" << y << endl ; //y=9 devolver 0 ; }

Java y C#

Java no tiene el concepto de un puntero, y C# rara vez usa el concepto de una referencia en su lugar. Desreferenciar referencias y tomar direcciones de objetos para asignarlas a referencias no requiere un operador especial.

PHP

Las referencias en PHP son un medio para acceder al contenido de una sola variable con diferentes nombres. No son como punteros C y no son alias de tabla de símbolos. En PHP, el nombre de una variable y su contenido son cosas diferentes, por lo que el mismo contenido puede tener nombres diferentes. La analogía más cercana son los nombres de archivos y archivos de Unix: los nombres de variables son entradas de directorio y los contenidos de las variables son archivos en sí mismos. Los enlaces en PHP son análogos a los enlaces duros (hardlinks) en los sistemas de archivos de Unix.

<?php $a = 'texto' ; $b =& $a ; imprimir $b ; $a = 5 ; imprimir $b ; texto 5

Erlang

Una referencia en Erlang es un  tipo de datos para un identificador único, que se usa solo para realizar comparaciones y coincidencias de patrones [1] :

send_kv ( N , K , V ) -> Referencia = make_ref (), % crear referencia { servidor , N } ! { put , self ( ), Referencia , K , V }, % enviar solicitud incluyendo referencia recibir { respuesta , Referencia , ok } -> ok % respuesta a solicitud después de 5000 -> { error , timeout } % o timeout end .

Véase también

Notas

  1. Martin Logan, Eric Merritt, Richard Carlsson. Erlang y OTP en acción. — Manning, 2011. — Pág. 36,343. — 397 pág. — ISBN 9781933988788 .