A pointer in C is a variable that stores the memory address of another variable. Pointers are used for dynamic memory allocation, passing arguments by reference, and accessing array elements efficiently. They are declared using an asterisk (*) before the variable name.