A pointer is a variable that stores memory addresses. Option C correctly defines a pointer as 'a variable for storing addresses.' Pointers allow you to indirectly access and manipulate memory locations. Option A is incomplete - while pointers contain addresses, they are themselves variables. Option B describes program flow. Option D describes a pointer's type, not what a pointer is.