Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/01/2014, 19:08
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: punteros y referencias

La diferencia uno de otro es que:
La referencia la debes asignar a la hora de crear.
int &referencia = foo; // ¡Correcto!, no tengo que poner el &delante de foo por que ya se que espera la dirección.
referencia = bar; //(¡INCORRECTO!) No se puede asignar otra dirección, solo a la hora de crear como en el caso antes descrito.

El puntero si puedes "reutilizar":
int *puntero = &bar; // ¡Correcto! Puntero se crea de manera distinta: si veo el * a la hora de crear el puntero debo pasar la & (dirección).
Al igual que la referencia "ambos" (tanto referencia como puntero) esperan la dirección del objeto(variable) a modificar.
puntero = &foobar; // ¡Correcto! Puedo re aprovechar puntero cuantas veces quiera re asignándoles la dirección de otra variable.
Los punteros no son tan cómodos como las referencias pero tienes mucho mas poder.

Digamos que la referencia produce una conexión con la variable y es irrompible "conectas la referencia a la variable cuando creas la referencia", es mas bien como dar un apodo a la variable, los apodos no pueden cambiar de persona ;) ( haces referencia a la variable ).

El puntero es "una variable" que contiene la dirección de otra variable, lo que le permite cambiar a lo que apunta durante su creación y también después de su creación.

El puntero da mucho mas juego que las referencias, pero las referencias pueden llegar a ser mas simples de usar.
Si lo que quiero es pasar algo y esperar que me lo retorne el resultado quizás la referencia por comodidad.
Pero si tengo que apuntar una cosa y después otra el puntero me da mas poder ( Poderes conllevan una gran responsabilidad O.o ¿Donde lo vi? XD).
Las referencias son exclusivas de c++.

Última edición por vangodp; 31/01/2014 a las 19:34