A pointer in C++ is a variable that stores the memory address of another variable. Pointers allow indirect access to and manipulation of data in memory. Pointers are declared with a specific data type and initialized by assigning the address of a variable using the address-of operator (&). Pointer arithmetic allows traversing arrays efficiently by performing operations on pointers. There are normal pointers that point to a specific data type, void pointers that can point to any type, and null pointers initialized to nullptr to indicate no target.