Pointer is a variable that stores the address of another variable. Pointers in C are used to allocate memory dynamically at runtime and can point to data of any type such as int, float, char, etc. Pointers are declared with a * before the variable name and are initialized using the address operator &. Pointers can be used to pass arguments to functions by reference and can also point to elements within structures.