After all, both these statements do the same thing...
int a = 10; int *b = &a; printf(\"%p\\n\",b); printf(\"%08X\\n\",b);
For example
The size of the pointer may be something different than that of int. Also an implementation could produce better than simple hex value representation of the address when you use %p.
int
%p