Direccionamiento de Memoria Punteros en C

Anuncio
Direccionamiento de Memoria
Punteros en C
Almacenamiento de Variables
●
●
●
Una variable es la terna (tipo, referencia, valor)
que identifica unívocamente a un objeto en un
programa C
La “referencia” es el nombre, que representa la
dirección de memoria donde está almacenado el
valor
El “valor” es el contenido de la memoria
asignada, y puede cambiar durante la ejecución
del programa
Almacenamiento: ejemplo
int x;
x=12;
int *p1;
p1 = &x;
0x00100
0x00101
0x00102
.
.
&x= 0x0104
.
0x01ffd
0x01ffe
0x01fff
sizeof(x) es igual a 4
p1 es igual a 0x00104
*p1 es igual a 12
Aritmética de Punteros
●
●
El compilador permite hacer operaciones
aritméticas de suma (incremento) y resta
(decremento) de punteros
La operación se ejecuta respetando la
naturaleza del puntero, es decir:
Apuntador de char, su unidad de incremento/decremento
será de 1 byte.
Apuntador de short, su unidad de incremento/decremento
será de 2 bytes.
Apuntador de int, su unidad de incremento/decremento será
de 4 bytes.
Apuntador de double, su unidad de incremento/decremento
será de 8 bytes.
Ejemplo
int primos[ ] = {1, 2, 3, 5, 7, 11, 13};
int *p = primos;
int i;
for( i=0; i < 7; i++)
printf( *p++ );
Ajuste de Punteros: cast
●
El tipo apuntado por un puntero puede ser
redefinido por el programa:
float *pF;
*pF = 3.1415926;
unsigned char * pC;
pC = (unsigned char *) pF;
printf(*pF);
// Imprime “3.1415926”
for (i=0; i< sizeof(float); i++)
printf( *pC++)
;
// Imprime cada byte
Descargar