Apuntadores
●
Son variables especiales que guardan la dirección de otras variables Solamente pueden guardar direcciones Cada variable utilizada en un programa tiene asignada una dirección enmemoria Es una de las herramientas más poderosas del lenguaje C
● ●
●
2
Uso
● ● ●
Acceso directo a la memoria Paso de argumentos por referencia
M.I. FCO. JAVIER RODRIGUEZ, F.I., UNAM3
Memoria
●
Las variables utilizadas en un programa pueden ser locales o globales Las variables locales se almacenen en una parte de la memoria que se conoce como “stack” (pila) La pilacrece en forma descendente (aunque para efectos didácticos lo consideraremos al revés)
Zona de memoria Static (variables globales y estáticas) Heap (memoria dinámica) Stack (variables 9992 M.I. FCO.locales) JAVIER RODRIGUEZ, F.I., UNAM 9996 10000
4
●
●
Dirección 1000 1004 1008
Memoria
●
La memoria que asigna el sistema operativo para nuestros programas se puede representar de lasiguiente forma
Dirección int a, z; char b; float c; a=20; z=30; b='x'; c=2.3; Contenido c=2.3 b='x' z=30 a=20
M.I. FCO. JAVIER RODRIGUEZ, F.I., UNAM
5
Memoria
●
Cada celda tieneasignada una dirección
Dirección int a, z; char b; float c; a=20; z=30; b='x'; c=2.3; 100 104 105 109
Contenido c=2.3 b='x' z=30 a=20
M.I. FCO. JAVIER RODRIGUEZ, F.I., UNAM
6
Memoria
●Cada celda tiene asignada una dirección
Dirección int a, z; char b; float c; a=20; z=30; b='x'; c=2.3; 100 104 108 112
Contenido c=2.3 b='x' z=30 a=20
En realidad es 108 en lugar de 105, porqueel SO realiza algo que se conoce como “padding” o alineación (todas las direcciones deben ser múltiplo de 4)
M.I. FCO. JAVIER RODRIGUEZ, F.I., UNAM
7
Memoria
●
Cada celda tiene asignadauna dirección
Dirección int a, z; char b; float c; a=20; z=30; b='x'; c=2.3; 100 104 108 112
Contenido c=2.3 b='x' z=30 a=20
Sin embargo, eso no nos debe interesar porque para efectos...
Regístrate para leer el documento completo.