[C con Clase] [Bulk] Diferencia entre punteros y referencias

ZeLion Zelion_cracking en yahoo.es
Mar Jul 8 08:36:22 CEST 2008


Hola David, es una gran pregunta y la gente cree que es lo mismo, pero no
son iguales en c++, en c se le suele llamar de una u de otra forma para
referirse a los punteros, pero en c++ existen punteros y referencias.

Basicamente los 2 se pueden usar de igual forma en el 80 o 90% de los casos,
pero existe una diferencia que se debe tener en cuenta.

- Un puntero es una variable que contiene una dirección de memoria, con lo
cual apunta a una dirección de memoria.
- Una referencia, es un alias de otra variable, o sea una referencia exacta
de otra variable. (Como si fuesen 2 variables iguales con distinto nombre).


Si se crea una variable de un tipo básico, como int, char, etc.. el puntero
y la referencia van a funcionar de igual forma, ej:
int a = 50;
int *b = a;

si 'a' cambia, cambiara el puntero 'b' ya que 'b' apunta a la dirección de
memoria de 'a'.
lo mismo con referencias:
int a = 50;
int &b = a;

Si 'a' cambia, la referencia 'b' también lo hace ya que 'b' es una copia
exacta de 'a'

Ahora bien, 'b' puede hacer b++ e incrementaría su puntero, pero si la
referencia hace b++ incrementaría el valor a 51.

Lo mejor para entenderlo es entender muy bien que un puntero se comporta
como un objeto, y tiene su dirección de memoria y se puede inicializar con
new, como cualquier otro tipo, pero una referencia no es un objeto, tan solo
es un alias de otra variable, y solo puede ser asignada a un tipo, como
tampoco se puede inicializar con new y tampoco puede ser de tipo void, y
algunas otras cosas a tener en cuanta.

Espero haberte dado una idea de las diferencias, pero aquí dejo un link que
detalla mas las diferencias para el que quiera saber mas.

http://www.zator.com/Cpp/E4_2_3.htm#Ref-2

Un saludo.











>-----Mensaje original-----
>De: cconclase-bounces en listas.conclase.net [mailto:cconclase-
>bounces en listas.conclase.net] En nombre de David Reza
>Enviado el: martes, 08 de julio de 2008 0:01
>Para: Lista de correo sobre C y C++
>Asunto: [Bulk] [C con Clase] Diferencia entre punteros y referencias
>
>Me gustaría saber cuál es la diferencia entre éstas dos
>'herramientas' del C++.
>
>¿Se pueden usar las 2 en una misma circunstancia?
>
>¿Son muy parecidas?¿Cuál es la mejor y por qué?
>
>
>_______________________________________________
>Lista de correo Cconclase Cconclase en listas.conclase.net
>http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.ne
>t
>Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ






Más información sobre la lista de distribución Cconclase