What are the differences between a pointer variable and a reference variable in C++

Sé que las referencias son azúcar sintáctica, por lo que el código es más fácil de leer y escribir.

¿Pero cuáles son las diferencias?

Resumen de las respuestas y enlaces a continuación:

Un puntero se puede reasignar cualquier número de veces, mientras que una referencia no se puede reasignar después del enlace. Los punteros no pueden apuntar a ninguna parte NULL), mientras que una referencia siempre se refiere a un objeto. No puede tomar la dirección de una referencia como puede hacerlo con punteros. No hay "aritmética de referencia" (pero puede tomar la dirección de un objeto señalado por una referencia y hacer una aritmética de puntero como en&obj + 5).

Para aclarar una idea errónea:

El estándar C ++ es muy cuidadoso para evitar dictar cómo un compilador puede implementar referencias, pero cada compilador de C ++ implementa referencias como punteros. Es decir, una declaración como:

int &ri = i;

si no está optimizado por completo, asigna la misma cantidad de almacenamiento que un puntero y coloca la dirección dei en ese almacenamiento.

Así, un puntero y una referencia usan la misma cantidad de memoria.

Como regla general

Utilice referencias en parámetros de función y tipos de retorno para proporcionar interfaces útiles y autodocumentadas.Utilice punteros para implementar algoritmos y estructuras de datos.

LecturA INTERESANTE

Mi favorito de todos los tiempos C ++ Preguntas frecuentes lite.Referencias vs. Punteros. Una introducción a las referencias.Referencias y const.

Respuestas a la pregunta(30)

Su respuesta a la pregunta