Pointers in C are variables that store memory addresses. They allow accessing and modifying the value stored at a specific memory location. Pointers contain the address of another variable as their value. To use pointers, they must first be declared along with the data type of the variable being pointed to. The address of the variable is then assigned to the pointer using the & operator. The value at the address can then be accessed using the * operator in front of the pointer variable name. The NULL pointer is a constant with a value of 0 that indicates an unassigned pointer. When a pointer is incremented, its value increases by the scale factor, which is the length of the data type being pointed to.