Antes de discutir la diferencia entre puntero y referencia, veamos primero el significado de estos dos términos brevemente. En un programa, los datos ocupan la memoria. Se debe conocer la ubicación exacta de la memoria en la que se colocaron los datos en un momento de ejecución para acceder a ellos. Variables de puntero y variables de referencia se utilizan para acceder a estos datos y manipular las direcciones de memoria en las que están. Es decir, tanto los punteros como las referencias se pueden usar para referirse a objetos indirectamente. Básicamente contienen direcciones de memoria como sus valores. El 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 La referencia es una variable que se refiere a otra variable. Los dos mecanismos, el puntero y referencia, tener diferentes 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 informática.
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í, el 'PTR' se declara como un objeto de tipo 'puntero a int' cuyo valor inicial es la dirección del objeto i. Esencialmente, PTR variable puntos a I almacenando su dirección de memoria.
Se llama a obtener el valor almacenado en una ubicación de memoria desamirante. El operador * se usa para desreferir el puntero. Después de que se realizan las declaraciones, la expresión indirecta *PTR DEREFERENCIAS PTR para referirse a i.
Para cambiar el valor de I, se puede usar la siguiente asignación;
*PTR = 20;
Los punteros pueden reasignarse para referirse también a diferentes objetos.
A puntero nulo es un tipo especial de puntero. Un puntero nulo a menudo se denota por 0 o nulo y no apunta a nada. Es una buena práctica usar un puntero nulo en el caso de no tener una dirección exacta que se asigne al puntero. Esta tarea se puede utilizar en operaciones y condiciones lógicas.
Los punteros pueden ser Se utiliza para almacenar y administrar las direcciones de la memoria asignada dinámicamente. Implementación y control de estructuras de datos, como pilas, colas y listas, se pueden hacer eficientes con el uso de punteros. Por ejemplo, una cola puede tener dos punteros; puntero de la cabeza y puntero de cola. Los punteros también se pueden usar para pasar variables por su dirección, lo que permitiría cambiar el valor. La manipulación directa de la memoria o los dispositivos mapeados de memoria también se pueden manejar utilizando punteros.
Los punteros permiten el acceso protegido y desprotegido a la memoria abordado. Por lo tanto, se deben tomar las precauciones necesarias para verificar que el contenido de un puntero sea válido. De lo contrario, la deserencia de un puntero con una dirección de memoria no válida podría hacer que el programa se bloquee.
Los punteros son compatibles con idiomas como C, C ++, Pascal y muchos idiomas de ensamblaje.
Puntero a señalando la dirección de memoria asociada con variable b.
Una referencia es simplemente una Identificador alternativo para un valor almacenado en la memoria. Permite que un programa acceda indirectamente a un dato en particular.
int i = 5;
int & ref = i;
La primera línea define una variable inicializada con un valor de 5. La segunda línea declara 're' 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 definido, una referencia no puede reasignarse un nuevo valor. Una referencia siempre se refiere al objeto con el que se inicializa. En la siguiente tarea, REF todavía se refiere a I, pero el valor ahora es 20.
ref = 20;
De acuerdo con el ejemplo anterior, las referencias de desferencias no requieren ningún operador.
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 que dicha variable una referencia garantice que el programa funcione de manera eficiente y correcta. Dado que, no hay referencias nulas, la validez de una variable de referencia no tiene que ser probada.
Las variables de referencia pueden ser utilizado para pasar de manera eficiente los datos grandes como argumentos a los procedimientos. Las referencias también se utilizan para compartir grandes datos entre diferentes áreas de código, ya que cada código mantiene una referencia a los datos.
Lenguajes de programación como C ++, Java, Python, Perl, PHP, Ruby, etc. Referencias de apoyo.
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 y.
Puntero: Una variable de puntero requiere que el * operador sea desactivado.
Referencia: Una variable de referencia requiere que no se deslepere ningún operador.
Puntero: Los punteros se pueden inicializar a NULL. Tales variables se llaman punteros nulos.
Referencia: Las referencias no se pueden inicializar a NULL. No existe una referencia nula. Una referencia siempre debe referirse a un objeto.
Puntero: Se puede reasignar una variable de puntero para referirse a diferentes objetos.
Referencia: Una variable de referencia no se puede reasignar. Siempre se refiere al objeto con el que se inicializó.
Puntero: Las variables del puntero deben usarse cuando la posibilidad de referirse a nada existe o cuando se requiere referirse a diferentes cosas en diferentes momentos.
Referencia: Las variables de referencia deben usarse cuando siempre habrá un objeto al que consultar y cuando no sea necesario usar esa variable de referencia para referirse a cualquier otra cosa que no sea ese objeto.
Puntero: Las variables de puntero se pueden usar para implementar algoritmos y estructuras de datos.
Referencia: Las variables de referencia se pueden usar en parámetros de función, y los tipos de retorno definen interfaces útiles.
Puntero: Lenguajes de programación como C, C ++, Pascal y muchos lenguajes de ensamblaje admiten punteros.
Referencia: Lenguajes de programación como C ++, Java, Python, Perl, PHP, Ruby, etc. Referencias de apoyo.
Imagen cortesía: "Punteros" de este archivo fue realizado por el usuario: SventRanslation.Propio trabajo.Esta imagen vectorial fue creada con Inkscape.(CC BY-SA 3.0) a través de Commons -