// Un puntero guarda una dirección: & la obtiene y * la sigue.
#include <stdio.h>

int main(void) {
    int x = 5;
    int y = 20;
    int *p = &x;

    printf("x = %d, *p = %d\n", x, *p);

    *p = 7;
    printf("x = %d, *p = %d\n", x, *p);

    p = &y;
    *p = *p + 1;
    printf("x = %d, y = %d, *p = %d\n", x, y, *p);

    printf("&x = %p\n", (void *) &x);
    printf("&y = %p\n", (void *) &y);
    printf(" p = %p\n", (void *) p);
    printf("sizeof(p) = %zu, sizeof(*p) = %zu\n", sizeof(p), sizeof(*p));
    return 0;
}
