Antes de discutir la diferencia entre puntero y referencia, primero veamos brevemente el significado de estos dos términos. En un programa, los datos ocupan la memoria. La ubicación exacta de la memoria en la que se colocaron los datos en un momento de ejecución debe ser conocida para poder acceder a ellos.. Variables puntero y variables de referencia se utilizan para acceder a estos datos y manipular las direcciones de memoria en las que se encuentran. Es decir, tanto los punteros como las referencias pueden usarse para referirse a objetos indirectamente. Básicamente tienen las direcciones de memoria como sus valores. los diferencia clave entre un puntero y una referencia es que un puntero es una variable que almacena la dirección de la ubicación de memoria de otra variable mientras que un referencia es una variable que se refiere a otra variable. Los dos mecanismos, la puntero y referencia, tienen diferente sintaxis y uso..
Un puntero es Un objeto de lenguaje de programación que almacena la dirección de memoria de un valor. en la memoria de computacion.
int i = 5;
int * ptr = & i;
La primera línea define una variable inicializada con un valor de 5. La segunda línea define un puntero a la dirección de memoria de la variable. Aquí, 'ptr' se declara como un objeto de tipo 'puntero a int' cuyo valor inicial es la dirección del objeto i. Esencialmente ptr variable apunta a i almacenando su dirección de memoria.
La obtención del valor almacenado en una ubicación de memoria se llama desreferenciación. El operador * se utiliza para eliminar la referencia al puntero. Después de que se hacen las declaraciones, la expresión indirecta * ptr dereferences ptr para referirse a i.
Para cambiar el valor de i, se puede usar la siguiente asignación;
* ptr = 20;
Los punteros pueden ser reasignados para referirse a diferentes objetos también.
UNA puntero nulo Es un tipo especial de puntero. Un puntero nulo a menudo se denota con 0 o nulo y apunta a nada. Es una buena práctica usar un puntero nulo en el caso de no tener una dirección exacta para ser asignada al puntero. Esta asignación puede ser usada en operaciones y condiciones lógicas..
Los punteros pueden ser Se utiliza para almacenar y administrar las direcciones de la memoria asignada dinámicamente.. La implementación y el control de estructuras de datos como pilas, colas y listas pueden hacerse eficientes con el uso de punteros. Por ejemplo, una cola puede tener dos punteros; puntero de cabeza y puntero de cola. Los punteros también se pueden utilizar para pasar variables por su dirección, lo que permitiría cambiar el valor. La manipulación directa de la memoria o los dispositivos asignados en la memoria también se pueden manejar mediante el uso de punteros.
Los punteros permiten el acceso protegido y no protegido a la memoria direccionada. Por lo tanto, deben tomarse las precauciones necesarias para verificar que el contenido de un puntero es válido. De lo contrario, al eliminar la referencia de un puntero con una dirección de memoria no válida, el programa podría fallar..
Los punteros son compatibles con lenguajes como C, C ++, Pascal y muchos lenguajes ensambladores.
Puntero una apuntando a la dirección de memoria asociada con la variable segundo.
Una referencia es simplemente una Identificador alternativo para un valor almacenado en la memoria.. Permite que un programa acceda indirectamente a un dato particular..
int i = 5;
int & ref = yo;
La primera línea define una variable inicializada con un valor de 5. La segunda línea declara 'ref' como un objeto de tipo 'referencia a int' que se refiere a i. Una referencia es diferente de los datos en sí, dado que se implementa una referencia como la dirección física del dato particular que se almacena en la memoria.
Una vez definida, una referencia no puede ser reasignada a un nuevo valor. Una referencia siempre se refiere al objeto con el que se inicializa. En la siguiente asignación, ref todavía se refiere a i, pero el valor ahora es 20.
ref = 20;
De acuerdo con el ejemplo anterior, las referencias de desreferenciación no requieren operadores.
Las referencias se pueden usar cuando una variable siempre se refiere a un objeto. Esto se debe a que, a diferencia de los punteros, las referencias no pueden ser nulas y siempre deben asignarse en la inicialización. Dado que las referencias siempre deben referirse a algún objeto, hacer de esa variable una referencia garantiza que el programa funcione de manera eficiente y correcta. Dado que no hay referencias nulas, no se debe probar la validez de una variable de referencia.
Las variables de referencia pueden ser Se utiliza para pasar datos grandes de manera eficiente como argumentos a procedimientos. Las referencias también se utilizan para compartir datos grandes entre diferentes áreas de código, ya que cada código mantiene una referencia a los datos.
Los lenguajes de programación como C ++, Java, Python, Perl, PHP, Ruby, etc. admiten referencias.
Puntero: Un puntero es la dirección de memoria de un objeto almacenado en la memoria de computación.
Referencia: Una referencia es un identificador alternativo o un alias para un objeto.
Puntero: Se declara un puntero con el operador *.
Referencia: Se declara una referencia con el operador &.
Puntero: Una variable de puntero requiere que el operador * sea desreferenciado.
Referencia: Una variable de referencia no requiere que ningún operador sea referenciado..
Puntero: Los punteros pueden inicializarse a nulo. Tales variables se llaman punteros nulos..
Referencia: Las referencias no se pueden inicializar a nulo. No hay tal cosa como una referencia nula. Una referencia siempre debe referirse a un objeto.
Puntero: Una variable de puntero puede ser reasignada para referirse a diferentes objetos.
Referencia: Una variable de referencia no puede ser reasignada. Siempre se refiere al objeto con el que se inicializó..
Puntero: Las variables de puntero deben usarse cuando no existe la posibilidad de referirse a nada o cuando se requiere referirse a cosas diferentes en momentos diferentes.
Referencia: Las variables de referencia deben usarse cuando siempre habrá un objeto al que referirse y cuando no se requiera usar esa variable de referencia para referirse a otra cosa que no sea ese objeto.
Puntero: Las variables de puntero pueden usarse para implementar algoritmos y estructuras de datos.
Referencia: Las variables de referencia se pueden usar en los parámetros de función, y los tipos de retorno definen interfaces útiles.
Puntero: Los lenguajes de programación como C, C ++, Pascal y muchos lenguajes de ensamblador admiten punteros.
Referencia: Los lenguajes de programación como C ++, Java, Python, Perl, PHP, Ruby, etc. admiten referencias.
Cortesía de imagen: "Punteros" por Este archivo fue creado por Usuario: SvenTranslation.Own work. Esta imagen vectorial fue creada con Inkscape.(CC BY-SA 3.0) vía Los comunes -