Why does the pointer p always point to its own memory address as an integer in the following example. I can't see where it is initialized and would guess that it would be a garbage value. Can someone show me why it is not a garbage value. By the way I am compiling this in gcc with -std set to c99.
#include <stdio.h>
int main() {
    int *p; int a = 4;
    p = &a;
    *p++;
    printf("%d %u\n", *p, p);
}
 
     
    