I searched online and while I could find a few discussions, I did not find a comprehensive description. So if anyone could form an answer which covers everything about size of a pointer, it would be of great help. The answer should at least cover following topics

1. What does the size of a pointer depend on?
2. What feature of architecture affects the size of a pointer? (In detail)
3. How does the compiler affect the size of a pointer?