Pointers provide an alternate way to access memory locations in C++. A pointer variable holds the address of another variable. Pointer variables must be declared with a data type followed by an asterisk, such as int* p. The address operator & returns the address of its operand, and the dereference operator * accesses the value at the address a pointer points to. Arrays can also be accessed using pointers since array names represent the base address of the array. Pointers allow values to be passed by reference to functions and returned from functions. Pointer arithmetic allows pointers to be incremented or decremented to access successive elements of an array.