A variable is basically a memory block or data object. You can read from it, and generally you can write to it. Variables can be of many different sizes and types.What is the difference between a pointer and a variable?
A pointer is just one of those types of variables. It is used to point to another object.
Edit: Add an example:
char a; /* A variable that holds a character */
int b; /* A variable that holds an integer */
MyStruct c; /* A variable that holds a structure */
char * x; /* A variable that points to a character */
int * y; /* A variable that points to an integer */
MyStruct * z; /* A variable that points to a structure */
In all cases (because you specified this is the C language) all the variables are uninitialized. You will need to fill in valid values for a, b, and c. You will also need to point x, y, and z to valid objects.
a = 12; /* set a to a value, specifically a numeric constant */
x = &a; /* set x to a value, specifically the address of another variable */