¿Cuál es la diferencia entre un puntero y una referencia en C++? Explique con ejemplos
¡Hola a todos! Acabo de empezar a estudiar C++ y no logro entender cuál es la diferencia entre punteros y referencias. En los libros escriben que ambos son una forma de trabajar con direcciones de memoria, pero se comportan de manera diferente.
Aquí tengo un ejemplo simple. Puedo declarar un puntero y a través de él cambiar el valor de una variable:
>>
int a = 5;
int* ptr = &a;
*ptr = 10; // ahora a = 10
Y exactamente igual puedo hacerlo con una referencia:
int a = 5;
int& ref = a;
ref = 10; // también a = 10
Parece que el resultado es el mismo. Pero he oído que las referencias no se pueden reasignar, mientras que los punteros sí. Y que las referencias son más seguras. ¿Pero por qué? ¿Y cuándo usar cada una?
Me confunde especialmente que en las funciones se pueden pasar parámetros tanto por puntero como por referencia. ¿Qué método es mejor? ¿Y hay situaciones donde no se pueda evitar usar punteros y las referencias no sirvan? Explíquenme, por favor, para principiante, preferiblemente con ejemplos de código. ¡Gracias de antemano!
<<