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
You cannot depend on %p displaying a 0x prefix. On Visual C++, it does not. Use %#p to be portable.
%p
0x
%#p