Pointer is a variable that stores the memory address of another variable. Pointers allow accessing and modifying the value of the variable being pointed to using dereferencing operator (*). Pointer variables have their own memory address. Array names act as pointers to the first element of the array. Pointer arithmetic can be used to access elements of an array using pointers. NULL is a special value used to indicate an empty or uninitialized pointer.