Código:
esto quiere decir que "a" va a tener la misma direccion de memoria que "x". puedo interpretarlo asi? se que referencia es un "alias" pero como puedo interpretarlo de manera "mas a fondo", asi?.int& a=x;
gracias.
| |||
referencias c++ hola.. una simple duda
Código:
esto quiere decir que "a" va a tener la misma direccion de memoria que "x". puedo interpretarlo asi? se que referencia es un "alias" pero como puedo interpretarlo de manera "mas a fondo", asi?.int& a=x; gracias. |
| |||
Respuesta: referencias c++ NO!!.. jejeje amigo margarito04 te cuento que me acabas de confundir mas... preguntaba esto precisamente porque estoy confundiendo las referencias con los punteros.. jaja bueno una pregunta mas ¿en que se diferencia de un puntero? la unica diferencia que veo es que en una referencia no se le puede asignar mas de una direccion de memoria. pd: te refieres a apuntar con que "a" va a acceder a la misma direccion de memoria que "x". mas no va a tener la misma direccion de memoria como pensaba? si es asi entonces no me confundistes :) |
| ||||
Respuesta: referencias c++ Cita: No, por que si imprimes "a" no te sale la direccion de memoria de "x", sale el valor de "a", es decir el valor de "x". ah ok. entonces a fin de cuentas Si va a almacenar una direccion de memoria correcto? |
| |||
Respuesta: referencias c++ ok, vamos a hacer un poco mas grafico el asunto. digamos que tu declaras una variable llamada x, a esta variable x se le asigna una localidad de memoria para almacenar la informacion que quieres. int x; //Reservamos 4 bytes (en la mayoria de los ordenadores de hoy en dia) de memoria //Digamos que se reserva la localidad 83D (por ejemplificar nadamas) ahora declaramos un puntero de tipo entero int *a; //Ojo aqui a este puntero se le va a asignar una localidad de memoria tambien, pero el tipo de dato // guardara sera una direccion de memoria (un apuntador) a un entero, digamos que se le asigna la // localidad 84A (otra ves, es solo un ejemplo) //ahora asignas valores x = 50; //Entonces en la localidad 83D vamos a tener el dato 50 : 83D ----> 50 a = &x; // y en la localidad 84A vamos a tener guardada la localidad 83D: 84A ----> 83D Mi Memoria Localidad ||| Dato ------------------------------- 83D ||| 50 ------------------------------- 84A ||| 83D ------------------------------- Es por esto que puedes acceder al numero 50 a traves del apuntador "a", porque "a" sabe donde esta ese 50. entonces no es que se les asigne la misma localidad de memoria, mas bien el apuntador guarda las direcciones. |
| |||
Respuesta: referencias c++ mm perfecto Trovaz gracias por el ejemplo grafico. a eso me referia. yo se que los punteros guardan solo direcciones de memoria y pueden acceder a el dato mediante el operador de desreferencia(*). pero entonces las referencias tambien actuan como un puntero? osea podemos decir que las referencias guardan la direccion de memoria de una variable como lo hace un puntero (asi lo interpreta el compilador) y entonces cuando lo usamos como un "alias" lo que hace es que el compilador lo "auto desreferencia" para trabajar unicamente con el valor de esa direccion de memoria almacenada y no modificar la direccion como tal. eso es lo que puedo imaginarme yo.. estoy en lo cierto? , si no entonces ¿como interpreta el compilador las referencias? gracias |
| |||
Respuesta: referencias c++ Me alegra que te de curiosidad ese tipo de detalles, me parece que hay varias tecnicas para la asignacion y acceso a la memoria que puede ocupar un programa. Te recomiendo que leas un buen libro de compiladores como "Compiladores: principios, técnicas y herramientas", ahi te enseñan las tecnicas utilizadas para la asignacion de memoria. Son temas muy interesantes y te van a ayudar mucho a entender los lenguajes de programacion, |
| |||
Respuesta: referencias c++ Cita: ok amigo Trovaz, seguire tu consejo y buscare un buen libro de compiladores. siempre me causa curiosidad como trabaja el compilador por eso hice esta pregunta. por ahora me quedo con que "a" es un alias de "x" (es el significado que le da todo libro de programacion a las referencias). en fin muchas gracias.
Iniciado por Trovaz Me alegra que te de curiosidad ese tipo de detalles, me parece que hay varias tecnicas para la asignacion y acceso a la memoria que puede ocupar un programa. Te recomiendo que leas un buen libro de compiladores como "Compiladores: principios, técnicas y herramientas", ahi te enseñan las tecnicas utilizadas para la asignacion de memoria. Son temas muy interesantes y te van a ayudar mucho a entender los lenguajes de programacion, pd: si alguien mas quiere añadir algo pues bienvenido sea ;) |
| |||
Respuesta: referencias c++ encontre esto en esta pagina http://www.zator.com/Cpp/E4_2_3.htm Cita: entonces, en definitiva las referencias no almacenan direcciones de memoria, ni son un objeto en si.. son simplemente "alias" mas nada.. Las referencias son un tipo de dato C++ estrechamente relacionado con los punteros. Una referencia de un objeto no es un objeto [5], en el sentido que no tiene su propio espacio de almacenamiento como ocurre con los punteros, y en consecuencia no pueden realizarse con ellas muchas de las operaciones que se relacionan con objetos. Por ejemplo obtener su dirección, crearlas con el operador new, o crear matrices de referencias. |
Etiquetas: |