I want to get a detailed explanation on the difference between using %d and %p type for printing pointer.
Also 
Why does %p return hexadecimal?
What are the cases when %d and %p return different values?
Does datatype only represent the way the user wants the output or it has something to do with the memory locations too?
 
     
     
    