A pointer is a variable that contains the memory address of another variable; every variable is a memory location that is defined by its address. It is paired with an identifier, which usually contains a value that may be changed during the program.
A pointer can be accessed directly, and also a pointer variable has its location in memory. When you use a pointer, it significantly improves the performance for a repetitive operation like traversing iterable data structure. A pointer is also used to hold the address of entry points called the “subroutine” in procedural programming and for run-time linking to dynamic link libraries.