[C con Clase] Disculpen, otra pequeña duda por hoy.
Steven Davidson
srd4121 en njit.edu
Mie Nov 16 16:02:59 CET 2011
Hola Miguel Ángel,
2011/11/16 Miguel Angel Torres Fernandez-piñar <miguelangeltorresfp en gmail.com>:
> Gracias Steven, esta me la puedes resolver otro día.....
>
> Es que realmente quería que me ayudaras con lo siguiente :
>
> Me ayuda mucho visualizar mentalmente una tabla de tres columnas, una para
> el identificador, otra para el valor y otra para la dirección de una
> variable, vaya lo normal.
>
> Un puntero me lo imagino con facilidad.
>
> Un referencia no sé cómo encajaría en esta tabla de tres columnas, o si se
> podría pensar en ella en estos términos.
>
Entendido. Pues allá va un ejemplo,
int num = 10;
int *ptr = #
int &ref = num;
y el vector descriptor, que es como se llama técnicamente "la tabla":
Dirección
de Memoria Tipo Nombre Valor Misceláneo
------------------------------------------------------------------------------------------
0x22AAFF00 int num 10
ref
[ ref = num; ]
0x22AAFF04 int * ptr 0x22AAFF00 [ ptr = # ]
...
Si aplicamos la implementación que seguramente hace el compilador
internamente, entonces el vector descriptor sería algo así:
Dirección
de Memoria Tipo Nombre Valor Misceláneo
------------------------------------------------------------------------------------------
0x22AAFF00 int num 10
0x22AAFF04 int * ptr 0x22AAFF00 [ ptr = # ]
0x22AAFF08 int * __ptr 0x22AAFF00 [ __ptr representa
'ref', así que __ptr = # ]
...
Como dije antes, el compilador automáticamente accede al objeto
apuntado por tal puntero para implementar el concepto de la
referencia. Por ejemplo,
ref++;
realmente se traduciría como,
(*__ptr)++;
Espero que con esto se aclare mejor el tema.
Steven
Más información sobre la lista de distribución Cconclase