Punteros Básicos

Anuncio
PLANETALIA
Formación y Consultoría
Punteros y Matrices en C - (1)
versión 1.1 - 1/04/2008
int plazas = 20;
// se asigna memoria para almacenar un int (4 bytes) , y se inicializa
// esa zona de memoria con el número 20
long long atomos;
// se asigna memoria para almacenar un long long (8 bytes) ,
// pero no se le da valor
char c = 'H';
// se asigna memoria para almacenar un carácter (1 byte) y se inicializa esa
// zona de memoria con 72 - el código ASCII de H
as
az
pl
at
c
ed
om
ad
os
int edad;
// se asigna memoria para almacenar un int (4 bytes) ,
// pero no se le da valor
20
? ? ? ? ? ? ? ? ? ?
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 72 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
printf("%d", edad);
printf("%d", sizeof(atomos));
// Se imprime el valor de edad. Como no fue inicializada, puede aparecer
// Imprime el tamaño de la variable átomos : 8 bytes
// cualquier cosa
printf("%d", &edad);
// Imprime la dirección de memoria donde se encuentra edad - 8937
printf("%d", sizeof(&atomos));
// Imprime el tamaño que es necesario para almacenar una dirección de
// memoria : 4 bytes
printf("%d", &atomos);
// Imprime la dirección de memoria donde se encuentra atomos - 8954
printf("%d", &plazas);
// Imprime la dirección de memoria donde se encuentra plazas - 8966
printf("%d", plazas);
// Imprime el valor de la variable plazas : 20
printf("%c", c);
// Imprime el valor de la variable c como caracter : H
printf("%u", c);
// Imprime el valor de la variable c como número sin signo : 72
printf("%d", &c);
// Imprime la dirección de memoria donde se encuentra la variable c :8947
printf("%d",&edad+1);
// Imprime la dirección de memoria donde se ubicaría el primer dato
// después de edad : 8941
printf("%d", &c+1);
// Imprime la dirección de memoria donde se ubicaría el primer dato
// después de c : 8948
os
+2
pl
az
as
&a
to
m
os
+1
&a
to
m
os
m
to
&a
+
&c 1
+2
d+
da
&e
&c
&c
1
d+
&e
da
d
da
&e
printf("%d",&atomos+3);
// Supongamos que i la variable atomos estuviese repetida 3 veces en
// memoria de forma consecutiva. Este printf imprime la primera dirección
// de memoria después de esa repetición. Como cada variable atomos
// ocupa 8 bytes, // &atomos + 3 imprime 8954 + 3 veces x 8 bytes = 8978
2
printf("%d",&edad+3);
// Supongamos que i la variable edad estuviese repetida 3 veces en
// memoria de forma consecutiva. Este printf imprime la primera
// dirección de memoria después de esa repetición. Como cada
// variable edad ocupa 4 bytes,
// &edad+3 imprime 8937+3 veces x 4 bytes = 8945
20
? ? ? ? ? ? ? ? ? ?
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 72 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Creado por Alexander Hristov. (c) 2008 Planetalia S.L. (http://www.planetalia.com), Licencia Creative Commons by-nc-nd 2.5.
Texto completo de la licencia en http://creativecommons.org/licenses/by-nc-nd/2.5/es/
La última versión de esta plantilla se encuentra siempre en http://www.ahristov.com/tutoriales/lenguaje-c/punteros.html
Descargar