Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/11/2010, 09:25
Trovaz
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 14 años, 1 mes
Puntos: 9
Respuesta: localidad de memoria y direccion del siguiente dato

Haber si puedes entender que es lo que pasa explicandotelo "graficamente".

Digamos que este es el segmento de memoria en el que corre tu programa

Código:
                         Byte No  1   2   3   4
                                          v   v   v   v
                   6000   --->   [   ][   ][   ][   ]
                   6004   --->   [   ][   ][   ][   ]
                   6008   --->   [   ][   ][   ][   ]
                   600C  --->   [   ][   ][   ][   ]
y declaras un arreglo int de con un tamaño de 4, al cual se le asigna la direccion 6000, entonces tendrias algo asi.

Código:
int arreglo[4];
                                Byte No  { 1   2   3   4 } => 4 bytes = 1 int
                                                   v   v   v   v         
   arreglo[0]  =   6000   --->   [   ][   ][   ][   ]
   arreglo[1]  =   6004   --->   [   ][   ][   ][   ]
   arreglo[2]  =   6008   --->   [   ][   ][   ][   ]
   arreglo[3]  =   600C  --->   [   ][   ][   ][   ]
como ya te lo explicaron, El compilador pos si mismo calcula los bytes que debe recorrer cuando le agregas un valor, es decir al hacer:

Código:
         arreglo[0]               //Direccion de memoria 6000, equivalente a arreglo +  0
         arreglo[1]               //Direccion de memoria 6004, equivalente a arreglo +  1
         arreglo[2]               //Direccion de memoria 6008, equivalente a arreglo +  2
         arreglo[3]               //Direccion de memoria 600C, equivalente a arreglo +  3
Cita:
entonces localidad de memoria y direccion de un registro y un dato no es lo mismo??, y si no es que es cada una?, gracias
Las localidades de memoria son los espacios en memoria donde se almacena información, para poder acceder a estas necesitamos de una direccion de memoria.

Es decir:

Código:
int arreglo[4];
arreglo[0] = 1;
arreglo[1] = 2;
arreglo[2] = 25;
arreglo[3] = -40;


                                Byte No  { 1   2   3   4 } => 4 bytes = 1 int
                                                   v   v   v   v         
   arreglo[0]  =   6000   --->   [   ][   ][   ][   ]    ------------->   Localidades de memoria
   arreglo[1]  =   6004   --->   [   ][   ][   ][   ]    ----------|
   arreglo[2]  =   6008   --->   [   ][   ][   ][   ]    ----------|
   arreglo[3]  =   600C  --->   [   ][   ][   ][   ]    ----------|
                             ^^^               
                               |                     
                               |-------------------------------------- Direcciones de memoria

 {1, 2, 25, -40} ----------> Datos