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